我正在使用django-celery
(https://pypi.python.org/pypi/django-celery/)在数据库中存储芹菜节拍(周期性任务)时间表。但它不支持版本3.1.25之外的芹菜。我想转到芹菜4.1.0,所以我正在考虑转移到django-celery-beat
(https://pypi.python.org/pypi/django_celery_beat)基于数据库的计划。
我能够成功地将表结构与数据一起迁移。但是,我看到django-celery-beat不支持crontab日程安排,而djcelery支持多个分钟和小时。
例如,请考虑此crontab计划 - 15,30,45 0,1 * * *
任务将在每天12:15,12:30,12:45,1:15,1:30,1:45运行。这曾经用于django-celery。但是在django-celery-beat中,它似乎只在12:15执行(第一次)。
旧设置 - Django==1.10, celery==3.1.24, django-celery==3.1.17
新设置 - Django==1.11.7, celery==4.1.0, django-celery-beat==1.1.0
任何人都可以确认是否在django-celery-beat中删除了对此类crontab计划的支持?如果它应该起作用,是芹菜还是django-celery-beat的问题?
由于
答案 0 :(得分:0)
您能否确认完全如何为数据库指定列表值?
我发现这样的列表似乎有效:' 5,10,15'。例如,我有一个如下所示的计划:
0,4,8,12,16,20,24,28,32,36,40,44,48,52,56 * * * 1,2,3,4,5,6,7,8 ,9,10,11,12(m / h / d / dM / MY)
这是与django-celery-beat == 1.1.0,celery == 4.1.0和Django == 2.0.1。确切地说,我从一个名为schedule
的celery.schedule.crontab对象构造了如下调用:
crontab = {}
for attr in ['minute', 'hour', 'day_of_week', 'day_of_month', 'month_of_year']:
crontab[attr] = str(list(getattr(schedule, attr)))[1:-1]
self.object.schedule = CrontabSchedule.objects.create(**crontab)
然而,我要提交一个错误,因为用于存储日期的数据库字段长度为64个字符,这对于最坏情况下的情况来说太短了,即1,2,3,4 ,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29 ,30,31和#39;这是没有空格的83个字符或113个字符。