Как вызвать задачу с задержкой в zappa django
В celery я могу вызвать задачу с помощью <func_name>.delay(). Как я могу сделать это в zappa? У меня есть задача:
@task()
def task_name():
pass
TL;DR;
Они предназначены для разных целей. Celery - это распределенная система очередей задач. Поэтому задания можно откладывать. Они отправляются в очередь, чтобы быть обработанными позже.
С другой стороны, Hand Zappa позволяет развернуть бессерверное приложение на AWS Lambda.
Если вы хотите отправить запрос в Zappa, вы можете сделать это как обычный запрос конечной точки, но это не система очередей.
Вступление
Из документации Celery:
Celery - распределенная очередь задач Celery - это простая, гибкая и надежная распределенная система для обработки огромного количества сообщений, предоставляющая операторам инструменты, необходимые для обслуживания такой системы.
Из документации Заппы:
Zappa позволяет очень легко создавать и развертывать бессерверные, управляемые событиями Python-приложения (включая, но не ограничиваясь, веб-приложения WSGI) на AWS Lambda + API Gateway. Думайте об этом как о "бессерверном" веб-хостинге для ваших Python-приложений. Это означает бесконечное масштабирование, нулевое время простоя, нулевое обслуживание - и за долю стоимости ваших текущих развертываний!
Python Celery и Zappa служат разным целям в контексте веб-разработки и управления задачами. Вот описание их ключевых различий:
1. Цель и пример использования
Сельдерей:
- Celery - это распределенная система очередей задач. Она используется для выполнения асинхронных и фоновых задач (например, отправка электронной почты, обработка изображений и т. д.).
- Она позволяет выполнять длительные задачи в фоновом режиме, не блокируя работу основного приложения.
- Celery часто используется с такими фреймворками, как Django или Flask, для разгрузки задач на рабочие станции, работающие отдельно от основного приложения.
Zappa:
- Zappa - это фреймворк, позволяющий разворачивать Python WSGI-приложения (такие как Django и Flask) на AWS Lambda. .
- Он превращает ваше Python веб-приложение в бессерверную архитектуру, обрабатывая развертывание в AWS Lambda и API Gateway.
- Основное внимание Zappa уделяет возможности масштабирования Python-приложений без управления серверами.
2. Архитектура
Сельдерей:
- Поддерживает распределенную архитектуру, в которой несколько рабочих процессов выполняют задания из очереди.
- Celery требует брокера сообщений (например, RabbitMQ, Redis) для хранения задач и связи между главным приложением и рабочими узлами.
- Архитектура ориентирована на обеспечение асинхронной обработки задач с повторами и возможностями планирования.
Zappa:
- Zappa упаковывает ваше веб-приложение на Python и развертывает его на AWS Lambda, сервисе бессерверных вычислений.
- Постоянный сервер не требуется; приложение запускается только при возникновении событий, таких как HTTP-запросы (через API Gateway).
- Zappa абстрагируется от управления серверами, автоматического масштабирования и балансировки нагрузки, опираясь на бессерверную инфраструктуру AWS.
3. Обработка заданий
4. Масштабируемость
Сельдерей:
- Справляется с длительно выполняющимися и асинхронными задачами.
- Позволяет распределять задачи между несколькими рабочими и планировать их последующее выполнение.
-
- :
- В первую очередь обрабатывает веб-запросы и событийно-управляемую логику бессерверным способом.
5. Развертывание и хостинг
Сельдерей:
- Рабочие устройства Celery должны быть развернуты и управляться отдельно от основного веб-приложения.
- Требуется настройка и поддержка брокера сообщений и бэкенда для хранения результатов.
Zappa:
- Zappa обрабатывает развертывание на AWS Lambda, что позволяет перейти к бессерверной работе, не заботясь об инфраструктуре.
- Вам не нужно управлять серверами, рабочими или брокерами; AWS берет на себя заботу о масштабировании, балансировке нагрузки и других инфраструктурных проблемах.
6. Интеграция с AWS
Сельдерей:
- Celery не привязан к какому-либо конкретному облачному провайдеру. Он может работать на различных платформах, пока доступны необходимые компоненты (рабочие, брокер сообщений).
- Вы можете настроить Celery на использование AWS SQS в качестве брокера сообщений, но он не интегрирован с сервисами AWS.
Zappa:
- Zappa глубоко интегрирована с сервисами AWS, в частности с AWS Lambda и API Gateway.
- Она упрощает развертывание Python-приложений на бессерверной инфраструктуре AWS, используя такие нативные сервисы, как S3, DynamoDB и CloudWatch.
7. Общие случаи использования
Сельдерей:
- Разгрузка длительных задач, таких как отправка электронной почты или обработка файлов.
- Обработка запланированных или периодических задач (например, ежедневных отчетов, заданий cron).
- Распределенная обработка задач на нескольких серверах.
Zappa:
- Развертывание веб-приложений Python на AWS Lambda для их запуска без управления серверами.
- Создание бессерверных API, микросервисов и событийно-ориентированных приложений.
- Масштабирование Python-приложений без необходимости управления инфраструктурой.
Summary:
- Celery фокусируется на управлении и асинхронном выполнении фоновых задач, требуя брокера и рабочих для обработки распределенных задач.
- Zappa фокусируется на развертывании веб-приложений на Python в AWS Lambda, обеспечивая бессерверную архитектуру с автоматическим масштабированием и управлением инфраструктурой со стороны AWS.