安排 Django Celery 定期任务从某个时间运行到另一个时间

Posted

技术标签:

【中文标题】安排 Django Celery 定期任务从某个时间运行到另一个时间【英文标题】:Schedule Django Celery periodic tasks to run from time to other time 【发布时间】:2017-09-25 21:47:53 【问题描述】:

我如何才能完成运行 Django Celery 任务,使其仅在周一至周五运行,并且在那些日子仅从美国东部标准时间上午 9 点到下午 5 点运行?

celery.py

from celery.schedule import crontab


app.conf.beat_schedule = 
    'compute-every-5-seconds': 
         'task': 'sum',
         'schedule': crontab(),
     ,
  

我应该向 crontab() 添加哪些参数以使其在那些日子和仅在这些时间之间运行?

【问题讨论】:

【参考方案1】:

celery.py

from celery.schedule import crontab
app.conf.beat_schedule = 
    'compute-every-minute-mon-through-friday-9-to-5': 
         'task': 'sum',
         'schedule': crontab(minute='*/1',
hour='9-17', day_of_week='mon,tue,wed,thu,fri'),
     ,
  

minute='*/1' - 每分钟运行一次

hour='9-17' - 上午 9 点到下午 5 点运行

day_of_week='mon,tue,wed,thu,fri' - 周一至周五

其中大部分都可以在documentation 页面上找到,请查看!

【讨论】:

以上是关于安排 Django Celery 定期任务从某个时间运行到另一个时间的主要内容,如果未能解决你的问题,请参考以下文章

Django 1.9 + celery + django-celry 实现定时任务

Celery 和 Django 的定期任务

使用 django 和 celery 运行定期任务

在使用 django_celery_beat 设置的 Django 视图中使用 Celery 定期任务输出,并使用 Redis 设置缓存

Elastic Beanstalk 上的 Django 中的定期任务(可能使用 celery beat)

Django celery 定期任务间隔更改未在数据库中更新