diff --git a/setup.cfg b/setup.cfg index 3094ad1..23390c4 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = yatq -version = 0.0.6 +version = 0.0.7 [options] packages = find: diff --git a/yatq/__init__.py b/yatq/__init__.py index 3365f33..5323bd7 100644 --- a/yatq/__init__.py +++ b/yatq/__init__.py @@ -1 +1 @@ -from .worker.cli import run +from .worker.cli import run, async_run diff --git a/yatq/worker/cli.py b/yatq/worker/cli.py index 85e7440..ad7b481 100644 --- a/yatq/worker/cli.py +++ b/yatq/worker/cli.py @@ -44,7 +44,7 @@ def run_worker_cli(): # pragma: no cover ) -def run( +async def async_run( worker_settings: Type[WorkerSettings], queue_names: List[str], logging_config: Optional[Dict] = None, @@ -55,9 +55,9 @@ def run( loop = asyncio.get_event_loop() - loop.run_until_complete(worker_settings.on_startup()) + await worker_settings.on_startup() try: - redis_client = loop.run_until_complete(worker_settings.redis_client()) + redis_client = await worker_settings.redis_client() worker = build_worker( redis_client, worker_settings.factory_cls, @@ -72,6 +72,23 @@ def run( for signum in stop_signals: loop.add_signal_handler(signum, lambda: asyncio.create_task(worker.stop())) - loop.run_until_complete(worker.run()) + await worker.run() finally: - loop.run_until_complete(worker_settings.on_shutdown()) + await worker_settings.on_shutdown() + + +def run( + worker_settings: Type[WorkerSettings], + queue_names: List[str], + logging_config: Optional[Dict] = None, + max_jobs: Optional[int] = None, +) -> None: # pragma: no cover + loop = asyncio.get_event_loop() + loop.run_until_complete( + async_run( + worker_settings=worker_settings, + queue_names=queue_names, + logging_config=logging_config, + max_jobs=max_jobs, + ), + )