12

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

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

然而它没有用。有没有这样做的标准方法?

4

2 回答 2

20

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)
    },
}
于 2014-03-27T20:44:52.923 回答
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
于 2015-11-04T10:01:12.570 回答