我正在尝试设置两个都在每分钟运行的任务。有没有办法将它们组合在一起运行?
我在CELERYBEAT_SCHEDULE
中指定了celeryconfig.py
如下:
CELERYBEAT_SCHEDULE = {
'every-minute': {
'task': 'tasks.add',
'schedule': crontab(minute='*/1'),
'args': (1,2)
},
}
所以如果我想要运行两个任务,我会期待这样的事情吗?
CELERYBEAT_SCHEDULE = {
'every-minute': {
'task': ['tasks.add','task.multiply'],
'schedule': [crontab(minute='*/1'),crontab(minute='*/1')],
'args': [(1,2),(3,4)]
},
}
然而它没有用。有没有标准的方法呢?
答案 0 :(得分:15)
Celery Documentation: Periodic Tasks表示您只能拥有要执行的任务的名称(不是列表等)
您可以创建两个不同的计划条目:
CELERYBEAT_SCHEDULE = {
'every-minute_add': {
'task': 'tasks.add',
'schedule': crontab(minute='*/1'),
'args': (1,2)
},
'every-minute_multiply': {
'task': 'task.multiply',
'schedule': crontab(minute='*/1'),
'args': (3,4)
},
}
答案 1 :(得分:0)
CELERYBEAT_SCHEDULE = {
'every-minute': {
'task': 'tasks.add',
'schedule': crontab(minute='*/1'),
'args': (1,2)
},
}
您可以根据自己的问题使用单一任务芹菜来完成工作。 你的tasks.py应该是
def multiply(p1,p2):
return p1*p2
def add(x,y):
z=multiply(3,4)
return x+y,z