Какие ресурсы по асинхронности и очередям в Python вы бы посоветовали для изучения?

Как обеспечить эффективную работу скрипта, который требует 2-3 минут на выполнение, внедренного в fastapi приложение, чтобы избежать проблем при одновременном использовании несколькими пользователями?
  • 8 марта 2024 г. 9:08
Ответы на вопрос 2
Для изучения асинхронности и работы с очередями в Python я бы посоветовал следующие ресурсы:

1. "Async IO in Python: A Complete Walkthrough" на Real Python (https://realpython.com/async-io-python/)
2. "Python async/await Tutorial" на Corey Schafer's YouTube channel (https://www.youtube.com/watch?v=Mj6B5_k2yUM)
3. "Celery: Distributed Task Queue" (https://docs.celeryproject.org/en/stable/django/index.html)

Чтобы обеспечить эффективную работу скрипта, который требует 2-3 минут на выполнение, внедренного в FastAPI приложение, можно воспользоваться Celery для асинхронного выполнения задач. Celery позволяет запускать задачи в фоновом режиме, что позволит избежать проблем при одновременном использовании несколькими пользователями. Также можно использовать Redis или другую систему очередей для управления задачами и их выполнением.
Если выполняется так долго, я бы сделал следующим образом: 
Создал бы приложение celery с задачей, сделал бы ручку апи, которая запускает задачу и отдает ссылку на результат, ссылка на результат отдает либо "еще выполняется", либо результат.
Либо, вместо ссылки на результат, можно отправлять его на email.
Я бы написал docker-compose.yml с контейнерами api, nginx, celery, redis, но можно развернуть все любым удобным способом, это не обязательно.
Похожие вопросы