我可以安排芹菜任务在一定时期内执行吗?

时间:2012-02-20 23:09:29

标签: sms queue celery django-celery

我为一个根据订阅向用户发送短信的组织工作,我的堆栈有Django,Celery,Redis,RabbitMQ,PostgreSQL,Apache,nginx和Kannel。在这种环境中,每个SMS服务提供商都有一段时间可以发送SMS。

假设我有一个芹菜任务,向运营商网络服务提出结算请求,如果结算成功,我必须发送短信,是否有办法安排在一定时期内发送此任务,比如说上午8点到下午6点?我知道我可以指定eta和expiration,但是我不希望我的任务到期,因为我必须发送短信,所以我会在第二天发送它们

1 个答案:

答案 0 :(得分:0)

您可以将SMS放入队列并使用 crontab shceduler在特定时间发送它们。下面的示例在8到6之间每隔10分钟执行tasks.send_sms任务。

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"),
    }, }