/
systemsstrategyy
/
Treker
Обзор
Документация
Войти
/
systemsstrategyy
/
Treker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
workers/queue.py
31 строка
1 KB
SystemsStrategy
Initial import
02 июл 2026, 15:15
02 июл 2026, 15:15
9624ed1
Код
Авторство
О чём код?
"""Procrastinate App instance — общая точка регистрации задач. Coding_Principles §5: Postgres-backed очередь. Domain-задачи живут в `workers/tasks/<module>.py`, импортируются здесь — Procrastinate автодискаверит их при `app.open_async()`. Тонкость с asyncpg URL: Procrastinate использует psycopg (sync) или psycopg-c (async через asyncio). asyncpg драйвер не поддерживается — поэтому конвертируем URL `postgresql+asyncpg://` → `postgresql://`. """ from __future__ import annotations import re from procrastinate import App, PsycopgConnector from api.core.settings import settings def _to_psycopg_url(url: str) -> str: """SQLAlchemy-стиль (postgresql+asyncpg://) → плоский postgresql:// для Procrastinate (использует psycopg, не asyncpg).""" return re.sub(r"^postgresql\+\w+://", "postgresql://", url) # Singleton App: одна точка регистрации для всех модулей. Используется # и worker'ом (run_worker), и веб-приложением (для defer-задач). app: App = App( connector=PsycopgConnector(conninfo=_to_psycopg_url(settings.database.url)), )