Первоначальная версия VidConf

This commit is contained in:
2026-07-23 01:04:01 +03:00
commit 896455381a
335 changed files with 61527 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
"""Тесты маршрутизации задач Celery по очередям.
Проверяем не сами паттерны `task_routes` (это конфигурация), а результат их
резолвинга Celery-роутером `app.amqp.router` для КОНКРЕТНЫХ имён задач,
которые реально ставятся в очередь (`workers/tasks/dispatch.py`,
`workers/tasks/maintenance.py`, `backend/services/pipeline_producer.py`,
`backend/services/invitations_producer.py`) — регрессия на опечатку в
паттерне (например, `workers.tasks.notify.*` вместо `workers.tasks.notify`)
будет поймана здесь, а не только при ручном прогоне в проде. Не требует
подключения к брокеру: `Router.route` — чистая функция над `task_routes`.
"""
from workers.celery_app import app
def _resolved_queue(task_name: str) -> str:
"""Имя очереди, в которую Celery-роутер направит задачу `task_name`."""
route = app.amqp.router.route({}, task_name)
queue = route["queue"]
return str(queue.name) if hasattr(queue, "name") else str(queue)
def test_run_pipeline_routes_to_transcription_queue() -> None:
"""`run_pipeline` — выделенная очередь `transcription` (только `worker-transcriber`)."""
assert _resolved_queue("workers.tasks.pipeline.run_pipeline") == "transcription"
def test_summarize_session_routes_to_summarize_queue() -> None:
"""`summarize_session` — очередь `summarize`."""
assert _resolved_queue("workers.tasks.summarize.summarize_session") == "summarize"
def test_notify_session_routes_to_notify_queue() -> None:
"""`notify_session` — очередь `notify`."""
assert _resolved_queue("workers.tasks.notify.notify_session") == "notify"
def test_send_invitations_routes_to_notify_queue() -> None:
"""`send_invitations` (рассылка .ics-приглашений) — тоже очередь `notify`."""
assert _resolved_queue("workers.tasks.invitations.send_invitations") == "notify"
def test_maintenance_tasks_route_to_default_celery_queue() -> None:
"""Задачи обслуживания без явного маршрута остаются на дефолтной очереди `celery`.
Базовый `worker` слушает `celery,summarize,notify` (`docs/deploy/scaling.md`) —
маршрутизация обслуживающих задач намеренно не переопределяется.
"""
assert _resolved_queue("workers.tasks.maintenance.cleanup_conferences") == "celery"
assert _resolved_queue("workers.tasks.maintenance.recover_stuck_summaries") == "celery"
assert _resolved_queue("workers.tasks.maintenance.recover_stuck_notifications") == "celery"