Skip to content

Commit 41218ff

Browse files
authored
Merge pull request #24 from rl-institut/feature/dev-queue
Allow option to send tasks to grid_dev queue
2 parents 708aeb1 + d0681d8 commit 41218ff

3 files changed

Lines changed: 25 additions & 5 deletions

File tree

docker-compose.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,18 @@ services:
4242
- redis
4343
networks:
4444
- sim_network
45+
worker-grid-dev:
46+
environment:
47+
- CELERY_BROKER_URL=redis://redis:6379/0
48+
- CELERY_RESULT_BACKEND=redis://redis:6379/0
49+
- CELERY_TASK_NAME=grid_dev
50+
build:
51+
context: .
52+
dockerfile: ./task_queue/Dockerfile
53+
depends_on:
54+
- redis
55+
networks:
56+
- sim_network
4557
redis:
4658
image: redis
4759
networks:

fastapi_app/webapp.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,16 @@
4747
# Test Driven Development --> https://fastapi.tiangolo.com/tutorial/testing/
4848

4949
def validate_simulation_queue(queue):
50-
if queue not in ["grid", "supply"]:
51-
raise HTTPException(status_code=400, detail=f'{queue} is not an accepted argument. Simulation options are "grid" or "supply"')
50+
if queue not in ["grid", "grid_dev", "supply"]:
51+
raise HTTPException(status_code=400, detail=f'{queue} is not an accepted argument. Simulation options are "grid", "grid_dev", or "supply"')
5252
return
5353

54+
55+
def _task_name_for_queue(queue: str) -> str:
56+
if queue == "grid_dev":
57+
return "grid.run_simulation"
58+
return f"{queue}.run_simulation"
59+
5460
@app.get("/")
5561
def index(request: Request) -> Response:
5662

@@ -69,7 +75,7 @@ async def simulate_json_variable(request: Request, queue: str = "supply"):
6975

7076
# send the task to celery
7177
task = celery_app.send_task(
72-
f"{queue}.run_simulation", args=[input_dict], queue=queue, kwargs={}
78+
_task_name_for_queue(queue), args=[input_dict], queue=queue, kwargs={}
7379
)
7480
queue_answer = await check_task(task.id)
7581

@@ -108,7 +114,7 @@ def run_simulation(request: Request, input_json=None, queue="supply") -> Respons
108114

109115
# send the task to celery
110116
task = celery_app.send_task(
111-
f"{queue}.run_simulation", args=[input_dict], queue=queue, kwargs={}
117+
_task_name_for_queue(queue), args=[input_dict], queue=queue, kwargs={}
112118
)
113119

114120
return templates.TemplateResponse(
@@ -150,7 +156,8 @@ async def revoke_task(task_id: str) -> JSONResponse:
150156

151157
@app.get("/schema/{queue}/{variant}")
152158
def get_schema(queue: str, variant: str):
153-
schema_file = f"{queue}_schema"
159+
schema_queue = "grid" if queue == "grid_dev" else queue
160+
schema_file = f"{schema_queue}_schema"
154161
schema_path = os.path.join(os.path.dirname(__file__), "static", f"{schema_file}.py")
155162

156163
if not os.path.isfile(schema_path):

fastapi_app/worker.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@
1111
app = Celery("tasks", broker=CELERY_BROKER_URL, backend=CELERY_RESULT_BACKEND)
1212
app.conf.task_queues = (
1313
Queue("grid", routing_key="grid.#"),
14+
Queue("grid_dev", routing_key="grid_dev.#"),
1415
Queue("supply", routing_key="supply.#"),
1516
)

0 commit comments

Comments
 (0)