Я создаю серверную систему с использованием FastAPI, где мне нужно обрабатывать ресурсоемкие задачи, такие как сканирование файлов и анализ данных.
В настоящее время обработка выполняется внутри конечной точки API, что приводит к блокировке запроса и значительно замедляет работу системы при обработке нескольких задач.
Я пробовал использовать асинхронные конечные точки, но производительность не улучшилась, поскольку рабочая нагрузка связана с процессором, а не с вводом-выводом.
Я рассматриваю различные подходы, такие как:
- Celery с Redis или RabbitMQ
- Многопроцессорность Python
- Фоновые задачи FastAPI
Моя цель — разработать масштабируемую и готовую к работе архитектуру, в которой:
- API остается отзывчивым
- Задачи могут выполняться в параллельно
- Система может масштабироваться по мере увеличения рабочей нагрузки.
Какова рекомендуемая архитектура для обработки фоновых задач, связанных с ЦП, в FastAPI?