Celery-Django: команды управления Celery vs django

Я работаю в туристической компании, где нам нужно периодически отправлять письма нашим командам.

С тех пор я использую команды управления django и запускаю их с помощью crontabs. Я читал о том, что может сделать сельдерей, но мне очень трудно понять, почему я должен использовать сельдерей?

Кроме того, поскольку это будет еще одно дополнение к моему проекту django, а также к базе данных, замедляет ли это производительность?


person Deepankar Bajpeyi    schedule 10.06.2013    source источник


Ответы (1)


Я не думаю, что вам следует использовать сельдерей, Cron по-прежнему звучит хорошо в вашем случае, но вы можете попробовать Celery.

Для меня Celery — это модуль Python для [асинхронных] [распределенных] очередей задач. Это позволяет вам распределять длительные задачи по нескольким процессам, работающим на нескольких машинах (но один процесс на одной машине все еще в порядке). Когда вам нужно сделать что-то, что требует времени (например, создать эскизы, обратиться к внешнему API или создать сложные отчеты), вы можете использовать Celery, чтобы сделать это в фоновом режиме, не блокируя HTTP-запрос для вашего пользователя.

Некоторые преимущества Celery перед crontab:

  • вы можете запускать задачи асинхронно, именно тогда, когда есть хотя бы один свободный celery worker
  • он хорошо масштабируется для нескольких процессов/машин
  • celerybeat похож на crontab; но вы можете планировать задачи на заданную дату и время или интервалы, используя синтаксис python в настройках.py
  • вы можете применять ограничения скорости (например, для какой-то расстановки приоритетов)
  • есть инструменты мониторинга, такие как Flower, которые дадут вам хорошее представление о том, какие задачи не удались и какие преуспели

Некоторые недостатки сельдерея:

  • настройка может занять некоторое время — вам нужно настроить брокер очереди и демонизировать рабочих в производстве; крон уже будет
  • каждый рабочий процесс, вероятно, будет использовать примерно такой же объем ОЗУ, что и ваш процесс Django, это может стоить вам $ или у вас может просто не хватить ОЗУ для запуска Celery, скажем, на уровне бесплатного пользования AWS.

Кроме того, если речь идет только об отправке электронных писем, вы можете рассмотреть возможность использования платной службы, такой как Postmark (я не аффилированные с ними), которые будут контролировать регулирование электронной почты для вас.

person Peter Kilczuk    schedule 18.06.2013