Загрузка...

FastAPI + Taskiq: отложенные задачи и asyncio

Подключаем Taskiq + RabbitMQ к нашему FastAPI приложению. В отличие от Celery, Taskiq позволяет запускать задачи с asyncio. Помимо этого очевидного плюса у Taskiq ещё много преимуществ: использование аннотаций типов, чтобы нам было легче писать код, улучшенная производительность в сравнении с Celery и Dramatiq, а также интеграции с FastAPI, FastStream, aiohttp, aiogram. В этом видео смотрим на Taskiq + aio-pika, не используем интеграции. === Правки === Лучше и надежнее применять настройки логгинга в стартапе брокера. Для брокеров есть механизм, схожий с lifespan: https://taskiq-python.github.io/guide/state-and-deps.html#state Так что можно сделать вот так: ```python @broker.on_event(TaskiqEvents.WORKER_STARTUP) async def startup(state: TaskiqState) -﹥ None: logging.basicConfig(...) ``` Вот тут изменение в коде: https://github.com/mahenzon/FastAPI-base-app/commit/db1f74282f4ecb00518c179190f6877f9a2b7102 Ещё, в связке с FastAPI лучше использовать taskiq_fastapi. Так можно будет переиспользовать зависимости из FastAPI в тасках. Например, чтобы было удобнее ходить в БД. Похоже, что нужен ещё один ролик по Taskiq 🙂 ====== Ранний доступ к моей новой образовательной программе про полный цикл разработки веб-приложений на Python (скидка по ссылке): https://stepik.org/a/232803/pay?promo=40b2fd9952f9efa3 Общение и самые свежие анонсы в Телеграм: https://t.me/Khorenyan Телеграм чат для бустеров (любой уровень) https://boosty.to/mahenzon Все-все ссылки на все мои площадки: https://taplink.cc/mahenzon Код тут: https://github.com/mahenzon/FastAPI-base-app/tree/e9488ae6970c55ffc818ad7e282ec64f152284f1 Документация: https://taskiq-python.github.io/ Метки: 00:00 Привет 00:50 Установка 03:22 Подготовка 06:25 Экземпляр 08:30 Настройки 11:03 startup и shutdown 12:47 Задача на отправку письма 23:10 Запуск воркера 26:57 Логирование 30:44 Итоги

Видео FastAPI + Taskiq: отложенные задачи и asyncio автора Сурен Хоренян
Яндекс.Метрика

На информационно-развлекательном портале SALDA.WS применяются cookie-файлы. Нажимая кнопку Принять, вы подтверждаете свое согласие на их использование.

Об использовании CookiesПринять