我正在尝试设置两个每分钟运行一次的任务。有没有办法把它们组合在一起跑?
我在celeryconfig.py
中指定了CELERYBEAT_SCHEDULE
如下:
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)]
},
}
然而,它没有起作用。有标准的方法吗?
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)
},
}
CELERYBEAT_SCHEDULE = {
'every-minute': {
'task': 'tasks.add',
'schedule': crontab(minute='*/1'),
'args': (1,2)
},
}
根据你的问题,你可以使用单任务芹菜来完成你的工作。你的任务.py应该是
def multiply(p1,p2):
return p1*p2
def add(x,y):
z=multiply(3,4)
return x+y,z