Могу ли я запланировать выполнение задачи сельдерея в определенный период? - PullRequest
0 голосов
/ 21 февраля 2012

Я работаю в организации, которая отправляет смс пользователям на основе подписки, в моем стеке есть Django, Celery, Redis, RabbitMQ, PostgreSQL, Apache, nginx и Kannel.В этой среде каждый поставщик услуг SMS имеет определенный период времени, в течение которого мы можем отправлять SMS.

Допустим, у меня есть задача сельдерея, которая отправляет запрос на выставление счета веб-службе оператора. Если выставление счета прошло успешно, я должен отправить SMS, есть ли способ запланировать отправку этой задачи между определеннымпериод, скажем, с 8 утра до 6 вечера?Я знаю, что могу указать eta и expiration, однако я не хочу, чтобы срок действия моих задач истек, потому что мне нужно отправить SMS, поэтому я отправлю их на следующий день

1 Ответ

0 голосов
/ 21 февраля 2012

Вы можете поместить SMS в очередь и использовать crontab shceduler для отправки их в определенное время. В приведенном ниже примере выполняется задача tasks.send_sms каждые 10 минут с 8 до 6.

http://ask.github.com/celery/userguide/periodic-tasks.html#crontab-schedules

from celery.schedules import crontab

CELERYBEAT_SCHEDULE = {
    "every-10-mins-between-8-6": {
        "task": "tasks.send_sms",
        "schedule": crontab(minute="*/10", hour="8,18"),
    }, }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...