【问题标题】:Celery beat schedule multiple tasks under same time-interval group芹菜节拍在同一时间间隔组下安排多个任务
【发布时间】:2014-03-17 22:23:27
【问题描述】:

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

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

但是没有用。有什么标准的方法吗?

【问题讨论】:

    标签: python flask celery celerybeat


    【解决方案1】:

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

    【讨论】:

    • 这就是最终的结果。
    【解决方案2】:
    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-05-11
      • 2017-02-21
      • 2017-11-02
      • 2012-03-11
      • 2014-07-24
      • 2012-03-27
      • 1970-01-01
      • 2015-05-13
      • 2021-02-06
      相关资源
      最近更新 更多