Skip to content

Commit 40f9210

Browse files
fix: celery
1 parent 59a2d5b commit 40f9210

File tree

5 files changed

+61
-59
lines changed

5 files changed

+61
-59
lines changed

services/web/server/src/simcore_service_webserver/celery.py

Lines changed: 0 additions & 59 deletions
This file was deleted.

services/web/server/src/simcore_service_webserver/celery/__init__.py

Whitespace-only changes.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import logging
2+
3+
from aiohttp import web
4+
from celery_library.backends.redis import RedisTaskInfoStore
5+
from celery_library.common import create_app
6+
from celery_library.task_manager import CeleryTaskManager
7+
from servicelib.celery.task_manager import TaskManager
8+
from servicelib.logging_utils import log_context
9+
from settings_library.celery import CelerySettings
10+
11+
from ..redis import get_redis_celery_tasks_client_sdk
12+
from .settings import get_plugin_settings
13+
14+
_logger = logging.getLogger(__name__)
15+
16+
_APP_CELERY_TASK_MANAGER = f"{__name__}.celery_task_manager"
17+
18+
19+
async def setup_task_manager(app: web.Application):
20+
with log_context(_logger, logging.INFO, "Setting up Celery"):
21+
celery_settings: CelerySettings = get_plugin_settings(app)
22+
23+
redis_client_sdk = get_redis_celery_tasks_client_sdk(app)
24+
25+
app[_APP_CELERY_TASK_MANAGER] = CeleryTaskManager(
26+
create_app(celery_settings),
27+
celery_settings,
28+
RedisTaskInfoStore(redis_client_sdk),
29+
)
30+
31+
yield
32+
33+
34+
def get_task_manager(app: web.Application) -> TaskManager:
35+
task_manager: CeleryTaskManager = app[_APP_CELERY_TASK_MANAGER]
36+
return task_manager
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import logging
2+
3+
from aiohttp import web
4+
from servicelib.aiohttp.application_setup import ModuleCategory, app_module_setup
5+
6+
from ._task_manager import setup_task_manager
7+
8+
_logger = logging.getLogger(__name__)
9+
10+
11+
@app_module_setup(
12+
__name__, ModuleCategory.ADDON, settings_name="WEBSERVER_CELERY", logger=_logger
13+
)
14+
def setup_celery(app: web.Application):
15+
app.cleanup_ctx.append(setup_task_manager)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from aiohttp import web
2+
from settings_library.celery import CelerySettings
3+
from simcore_service_webserver.constants import APP_SETTINGS_KEY
4+
5+
6+
def get_plugin_settings(app: web.Application) -> CelerySettings:
7+
settings: CelerySettings | None = app[APP_SETTINGS_KEY].WEBSERVER_CELERY
8+
assert settings, "setup_settings not called?" # nosec
9+
assert isinstance(settings, CelerySettings) # nosec
10+
return settings

0 commit comments

Comments
 (0)