芹菜异步功能

时间:2015-08-21 02:24:14

标签: python celery

我有一项任务,我想每小时运行一次。我需要运行它3次(对于列表中的每个元素),但不是让它们一个接一个地运行,我希望它们一次运行。这怎么可能与芹菜?我也在使用Flask。

现在,我有一个名为tasks.py的文件和我的任务,我使用celerybeat计划每小时运行一次。

这是我每小时打电话的功能:

请注意,我正在调用我导入文件的函数。

@celery.task
def stats():
    list = [1,2,3] 

    functions = [sensor_stats(60, each) for each in list]
    results = [function.wait() for function in functions]

更新 我定义了一个新任务,它将遍历列表并创建一个组,该组将为每个列表元素调用stats任务,即每个列表元素并行运行。

有关详细信息,请参阅http://celery.readthedocs.org/en/latest/reference/celery.html#celery.group

它看起来像这样:

@celery.task
def stats(interval, f_id):
     sensor_stats(interval, f_id)

 @celery.task
 def sensor_statistics():
    list = [1,2,3]

    res = group
    group(stats_function.s(60, each) for each in list)()

 CELERYBEAT_SCHEDULE = {
     'Stat Script': {
         'task': 'tasks2.sensor_statistics',
         'schedule': timedelta(hours=1),
         'args': (),
     }
 }

0 个答案:

没有答案