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

发布于 2022-09-03 09:38:49 字数 1024 浏览 8 评论 0

和官网的示例类似,我想要每隔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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

〃温暖了心ぐ 2022-09-10 09:38:49

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]
        },
    },
    )
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文