diff --git a/nomad/cli/admin/run.py b/nomad/cli/admin/run.py index fb807a75b10a86d7e4f27a3f091ad0f7d40519a4..8307b7476a2ff1ed47a485a9c6bf8b27cbe967ac 100644 --- a/nomad/cli/admin/run.py +++ b/nomad/cli/admin/run.py @@ -230,8 +230,21 @@ def run_appworker( celery_workers = 1 with concurrent_futures.ProcessPoolExecutor(2) as executor: - executor.submit(task_worker, workers=celery_workers) # type: ignore - executor.submit(task_app, workers=fastapi_workers, host=app_host, port=app_port) # type: ignore + results = [] + + def _submit(*args, **kwargs): + results.append(executor.submit(*args, **kwargs)) + + _submit(task_worker, workers=celery_workers) + _submit(task_app, workers=fastapi_workers, host=app_host, port=app_port) + + try: + for future in concurrent_futures.as_completed(results): + future.result() + except KeyboardInterrupt: + for future in results: + future.cancel() + executor.shutdown(wait=False) @run.command(help='Run both app and worker.')