芹菜在同一时间间隔组内击败了多个任务

时间:2014-03-17 22:23:27

标签: python flask celery celerybeat

我正在尝试设置两个都在每分钟运行的任务。有没有办法将它们组合在一起运行?

我在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)]
    },
}

然而它没有用。有没有标准的方法呢?

2 个答案:

答案 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