Skip to content

Commit f4b4af8

Browse files
committed
add celery client inside api-server
1 parent 2f57d5e commit f4b4af8

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed

services/api-server/requirements/dev.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
--requirement _tools.txt
1313

1414
# installs this repo's packages
15+
--editable ../../packages/celery-library/
1516
--editable ../../packages/common-library
1617
--editable ../../packages/models-library
1718
--editable ../../packages/postgres-database
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
from celery_library.common import create_app, create_task_manager
2+
from celery_library.task_manager import CeleryTaskManager
3+
from celery_library.types import register_celery_types, register_pydantic_types
4+
from fastapi import FastAPI
5+
from models_library.functions import (
6+
RegisteredProjectFunction,
7+
RegisteredPythonCodeFunction,
8+
RegisteredSolverFunction,
9+
)
10+
from settings_library.celery import CelerySettings
11+
12+
from ...api.dependencies.authentication import Identity
13+
from ...models.api_resources import JobLinks
14+
from ...models.schemas.jobs import JobPricingSpecification
15+
16+
17+
def setup_task_manager(app: FastAPI, celery_settings: CelerySettings) -> None:
18+
async def on_startup() -> None:
19+
app.state.task_manager = await create_task_manager(
20+
create_app(celery_settings), celery_settings
21+
)
22+
23+
register_celery_types()
24+
register_pydantic_types(
25+
Identity,
26+
RegisteredProjectFunction,
27+
RegisteredPythonCodeFunction,
28+
RegisteredSolverFunction,
29+
JobPricingSpecification,
30+
JobLinks,
31+
)
32+
33+
app.add_event_handler("startup", on_startup)
34+
35+
36+
def get_task_manager_from_app(app: FastAPI) -> CeleryTaskManager:
37+
assert hasattr(app.state, "task_manager") # nosec
38+
task_manager = app.state.task_manager
39+
assert isinstance(task_manager, CeleryTaskManager) # nosec
40+
return task_manager

services/api-server/src/simcore_service_api_server/core/application.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
from .. import exceptions
1515
from .._meta import API_VERSION, API_VTAG, APP_NAME
16+
from ..api.dependencies.celery import setup_task_manager
1617
from ..api.root import create_router
1718
from ..api.routes.health import router as health_router
1819
from ..clients.postgres import setup_postgres
@@ -88,6 +89,9 @@ def create_app(settings: ApplicationSettings | None = None) -> FastAPI:
8889

8990
setup_rabbitmq(app)
9091

92+
if settings.API_SERVER_CELERY and not settings.API_SERVER_WORKER_MODE:
93+
setup_task_manager(app, settings.API_SERVER_CELERY)
94+
9195
if app.state.settings.API_SERVER_PROMETHEUS_INSTRUMENTATION_ENABLED:
9296
setup_prometheus_instrumentation(app)
9397

0 commit comments

Comments
 (0)