python - celery beat schedule如何循环执行一系列任务?
天蓬老师
天蓬老师 2017-04-18 09:20:03
[Python讨论组]

和官网的示例类似,我想要每隔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]
        },
    },
    )
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号