diff --git a/brozzler/cli.py b/brozzler/cli.py index 87bfa5d..d6b6321 100644 --- a/brozzler/cli.py +++ b/brozzler/cli.py @@ -304,11 +304,6 @@ def brozzler_worker(argv=None): args = arg_parser.parse_args(args=argv[1:]) configure_logging(args) - def sigterm(signum, frame): - raise brozzler.ShutdownRequested('shutdown requested (caught SIGTERM)') - def sigint(signum, frame): - raise brozzler.ShutdownRequested('shutdown requested (caught SIGINT)') - def dump_state(signum, frame): signal.signal(signal.SIGQUIT, signal.SIG_IGN) try: @@ -330,10 +325,6 @@ def brozzler_worker(argv=None): finally: signal.signal(signal.SIGQUIT, dump_state) - signal.signal(signal.SIGQUIT, dump_state) - signal.signal(signal.SIGTERM, sigterm) - signal.signal(signal.SIGINT, sigint) - rr = rethinker(args) frontier = brozzler.RethinkDbFrontier(rr) service_registry = doublethink.ServiceRegistry(rr) @@ -342,8 +333,13 @@ def brozzler_worker(argv=None): chrome_exe=args.chrome_exe, proxy=args.proxy, warcprox_auto=args.warcprox_auto) - worker.run() + signal.signal(signal.SIGQUIT, dump_state) + signal.signal(signal.SIGTERM, lambda s,f: worker.stop()) + signal.signal(signal.SIGINT, lambda s,f: worker.stop()) + th = threading.Thread(target=worker.run, name='BrozzlerWorkerThread') + th.start() + th.join() logging.info('brozzler-worker is all done, exiting') def brozzler_ensure_tables(argv=None): diff --git a/setup.py b/setup.py index bc52352..8e230b8 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ def find_package_data(package): setuptools.setup( name='brozzler', - version='1.1b11.dev241', + version='1.1b11.dev242', description='Distributed web crawling with browsers', url='https://github.com/internetarchive/brozzler', author='Noah Levitt',