Python django_Cellery_beat是否支持多分钟/小时的crontab时间表?

Python django_Cellery_beat是否支持多分钟/小时的crontab时间表?,python,django,celery,django-celery,Python,Django,Celery,Django Celery,我正在使用django芹菜()在数据库中存储芹菜节拍(定期任务)计划。但它不支持3.1.25版本以外的芹菜。我想转到celery 4.1.0,因此我正在考虑转到django celery beat(基于db的时间表) 我能够成功地迁移表结构和数据。但是,我看到django Cellery beat不支持django Cellery支持的具有多分钟和多小时的crontab时间表 例如,考虑此CROTAB计划- 15、30、45、1**/代码> 任务将在每天12:15、12:30、12:45、1:

我正在使用
django芹菜
()在数据库中存储芹菜节拍(定期任务)计划。但它不支持3.1.25版本以外的芹菜。我想转到celery 4.1.0,因此我正在考虑转到django celery beat(基于db的时间表)

我能够成功地迁移表结构和数据。但是,我看到django Cellery beat不支持django Cellery支持的具有多分钟和多小时的crontab时间表

例如,考虑此CROTAB计划-<代码> 15、30、45、1**/代码>

任务将在每天12:15、12:30、12:45、1:15、1:30、1:45运行。这曾经在django芹菜中起作用。但在django芹菜节拍中,它似乎只在12:15执行(第一次)

旧设置-
Django==1.10,芹菜==3.1.24,Django芹菜==3.1.17

新设置-
Django==1.11.7,芹菜==4.1.0,Django芹菜节拍==1.1.0

有人能确认django芹菜节拍中是否已经放弃了对这种crontab时间表的支持吗?如果它被认为是有效的,这是芹菜或django芹菜的问题吗

谢谢

您能否确认您是如何将列表值指定给数据库的

我发现类似这样的列表似乎很有效:“5,10,15”。例如,我有一个时间表如下所示:

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)
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芹菜节拍==1.1.0,芹菜==4.1.0和django==2.0.1。准确地说,我从一个名为
schedule
的芹菜.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”来说太短了,即83个字符没有空格或113个空格。

Hmm。。。当您从DB中提取它们时,列表中有这些吗?您是否使用?@mutantkeyboard这些是数据库中使用
django芹菜创建的现有计划。我也尝试过创建新的,但没有使用get_或_create。我直接创建了一个
CrontabSchedule
对象并保存了它。如果我不使用get_或_create,会有区别吗?所以我假设你有类似于
app.conf.beat_schedule={#每周一早上7:30执行。'first task':{'task':'tasks.add','schedule':crontab(hour=7,minute=30,day_of_of_week=1),'args':(16,16),},'second task':{'task':'tasks.add','schedule':crontab(小时=12,分钟=30,周中的天=1),'args':(16,16),}
这应该是每个任务的一组字典。@mutantkeyboard No.如果我在DB中存储计划,为什么需要这样做?@ksrini您是否在命令中选择了scheduler类来运行celery beat?提到的错误被归档为。我没有在列表中使用括号。它过去在djcelery中没有括号的情况下工作。因此问题。我理解。我刚刚回顾了单元测试和AFAIC,没有括号的逗号分隔列表也应该可以工作。例如,请参阅。这就是为什么我要求您准确显示如何调用代码。在没有看到很难猜测您的问题是什么的情况下。在进一步的测试中,括号不起作用(不要问我为什么这么认为),但列表肯定会这样做,我提到的版本。我正在更新我的答案以反映这一点。我查看了指向您提到的测试的链接。测试
test\u CrontabSchedule\u schedule
似乎表明逗号分隔的值应该有效。不是吗?