Как вызвать задачу с задержкой в 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. Масштабируемость

  • Сельдерей:

    • Справляется с длительно выполняющимися и асинхронными задачами.
    • Позволяет распределять задачи между несколькими рабочими и планировать их последующее выполнение.
    Celery также предоставляет механизмы для повторных попыток выполнения задач, мониторинга и хранения результатов.
  • Zappa
      :
    • В первую очередь обрабатывает веб-запросы и событийно-управляемую логику бессерверным способом.
    Хотя AWS Lambda может обрабатывать длительные задачи, она ограничена максимальным временем выполнения (до 15 минут).
Zappa не предназначена специально для обработки фоновых задач, как Celery, но может интегрироваться с такими сервисами AWS, как Step Functions или SQS, для обработки задач.

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.
Вернуться на верх