【问题标题】:Celery schedule doesn't trigger the tasks, no error reportedCelery schedule 没有触发任务,没有报错
【发布时间】:2019-02-10 19:38:07
【问题描述】:

我将 Django 与 celery 一起使用:

在 celery.py 我有:

app.conf.beat_schedule = {
    'send_notes_email': {
        'task': 'send_notes_email_async',
        'schedule': crontab(minute=3), 
    },
}

任务已设置:

@app.task(bind=True, name='send_notes_email_async', max_retries=3)
def send_notes_email_async():
    print('a')
    send_notes_email()

Celery 正在工作,识别任务,但 3 分钟后未触发。 也没有错误。 Redis 报告密钥 Celery 任务无计划地进行

 -------------- celery@WIN-U5VDSO5V1CK v4.2.1 (windowlicker)
---- **** -----
--- * ***  * -- Windows-7-6.1.7601-SP1
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app:         PH:0x3d2d128
- ** ---------- .> transport:   redis://localhost:6379//
- ** ---------- .> results:     redis://localhost:6379/
- *** --- * --- .> concurrency: 2 (eventlet)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery
[tasks]
  . send_notes_email_async

【问题讨论】:

    标签: django celery


    【解决方案1】:

    您的节拍计划配置错误,cronjob 中的minute=3 表示在第 3 分钟(01:03、02:03、03:03、04:03...)执行任务。

    这就是你想要的,它每 3 分钟执行一次任务:

    app.conf.beat_schedule = {
        'send_notes_email': {
            'task': 'send_notes_email_async',
            'schedule': crontab(minute=*/3), 
        },
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-24
      • 2017-10-11
      • 1970-01-01
      • 2021-12-12
      • 2021-03-26
      • 2018-11-20
      • 1970-01-01
      • 2021-07-04
      相关资源
      最近更新 更多