【问题标题】:Can i schedule a celery task to execute between a certain period?我可以安排一个芹菜任务在一段时间之间执行吗?
【发布时间】:2012-03-11 07:21:35
【问题描述】:

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

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

【问题讨论】:

    标签: sms queue celery django-celery


    【解决方案1】:

    您可以将 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"),
        }, }
    

    【讨论】:

    • 有没有办法使用 djcelery 和数据库调度程序来安排这个?
    • CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
    猜你喜欢
    • 1970-01-01
    • 2014-07-24
    • 2017-05-24
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 2015-05-25
    • 2014-02-11
    相关资源
    最近更新 更多