python - celery beat schedule如何循环执行一系列任务?

 国民男神-权志龙 发布于 2022-10-29 12:27

和官网的示例类似,我想要每隔20秒循环一次add(1,2),add(2,3) 和 add(3,4)这三个任务,代码改如何更改?

proj/__init__.py
         /celeryapp.py
         /tasks.py

celeryapp.py

from celery import Celery
from datetime import timedelta

add = [(1,2),(2,3), (3,4)]
celeryapp = Celery('proj',
        backend='amqp://',
        broker='amqp://',
        include=['proj.tasks'])

celeryapp.conf.update(
        CELERY_TASK_RESULT_EXPIRES=3600,
        CELERY_ROUTES = {
            'proj.tasks.add': {'queue': 'hipri'},
        },
        CELERYBEAT_SCHEDULE = {
            "add": {
                "task": "proj.tasks.add",
                "schedule": timedelta(seconds=20),
                "args": add
            },
        },
        )

if __name__ == '__main__':
    celeryapp.start()

tasks.py

from __future__ import absolute_import
from proj.celeryapp import celeryapp
from celery import group

@celeryapp.task
def add(x, y):
    return x + y
1 个回答
  • celeryapp.conf.update(

        CELERY_TASK_RESULT_EXPIRES=3600,
        CELERY_ROUTES = {
            'proj.tasks.add': {'queue': 'hipri'},
        },
        CELERYBEAT_SCHEDULE = {
            "add": {
                "task": "proj.tasks.add",
                "schedule": timedelta(seconds=20),
                "args": add[0]
            },
            "add": {
                "task": "proj.tasks.add",
                "schedule": timedelta(seconds=20),
                "args": add[1]
            },
            "add": {
                "task": "proj.tasks.add",
                "schedule": timedelta(seconds=20),
                "args": add[2]
            },
        },
        )
    
    2022-11-12 01:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有