Недавно я что-то читал об этом, и дело было в том, что сельдерей более урожайный.
Теперь я не могу найти подробную информацию о разнице между этими двумя и о том, как лучше их использовать.
Прямо из документации:
Если вам нужно выполнить тяжелые фоновые вычисления, и вы не обязательно нужно, чтобы он запускался одним и тем же процессом (например, вы не нужно совместно использовать память, переменные и т. д.), вы можете извлечь выгоду из используя другие более крупные инструменты, такие как Celery.
Они, как правило, требуют более сложных конфигураций, очереди сообщений/работ. менеджер, такой как RabbitMQ или Redis, но они позволяют запускать фоновые задачи в нескольких процессах, и особенно в нескольких серверы.
Чтобы увидеть пример, проверьте Генераторы проектов, все они включают Сельдерей уже настроен.
Но если вам нужно получить доступ к переменным и объектам из одного FastAPI, или вам нужно выполнять небольшие фоновые задачи (например, отправки уведомления по электронной почте), вы можете просто использовать
BackgroundTasks
.
Взгляните также на этот ответ.