0

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

假设我有一个芹菜任务,它向运营商网络服务发出计费请求,如果计费成功,我必须发送短信,有没有办法安排这个任务在某个时间段之间发送,比如上午 8 点到下午 6 点? 我知道我可以指定一个 eta 和一个过期时间,但是我不希望我的任务过期,因为我必须发送 SMS,所以我会在第二天发送它们

4

1 回答 1

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"),
    }, }
于 2012-02-21T09:39:31.020 回答