celery异步分布式框架使用二(定时任务)

一、简介

  celery beat 是一个调度程序;它定期启动任务,然后由集群中的可用节点执行任务。
默认情况下会从配置中的 beat_schedule 项中获取条目(entries),但是也可以使用自定义存储,例如将entries存储在SQL数据库中。

二、配置定时任务

  在这里贴一下项目文件,避免不是从上一篇博客过来的小伙伴

  

 

 

   定时任务比较方便,只需要在配置文件中进行配置

  1、celeryconfig.py 配置文件:

复制代码
# coding=utf-8

from celery.schedules import crontab 


broker_url  = 'redis://127.0.0.1:6379/0' # redis 存储发送端来的任务队列
result_backed = 'redis://127.0.0.1:6379/1' # 用redis存储执行端执行得到结果
timezone = 'Asia/Shanghai' # 设置时间的时区  注意这里是上海

# imports = [
#     "proj.tasks",  # 导入py文件,经过测试可以不需要
# ]
beat_schedule = {
    '任务名字' : {
        'task' : 'proj.tasks.add',  # 这个就是我们定义的具体任务
        'schedule' : crontab(),  # 默认是一分钟一次,具体其他时间设置可以参考该类定义的构建函数
        # 'args' : (2, 5)
        'kwargs': {
            'x' : 4,
            'y' : 7
        }
# 这个crontab就是时间调度配置:每分钟执行一次,所以一分钟一条
    }
}
复制代码

    ①、首先要先设置一下时区,不然很悲催

    ②、定义任务,可以看到是字典格式,定义多个,只需继续增加就可以

    ③、定义轮训相关时间 schedule:

    

 

    

 

       贴一下源码,可以看到分钟、小时、天、周,根据需要进行实例化类crontab即可。

    ④、关于args和kwargs参数,我定义的任务需要传递参数,这里就可以使用这两个

      使用args可以使用元组和列表(2, 3),建议使用元组,如果只有一个参数记得后边的,

      使用kwargs 字典{你的形参:值}

  2、celery.py

复制代码
# coding=utf-8

from . import celeryconfig
from celery import Celery

app = Celery(
    "proj",
    include=['proj.tasks']
)

app.config_from_object(celeryconfig)

if __name__ == "__main__":
    app.start()
复制代码

  3、tasks.py

复制代码
# coding=utf-8

import time

from .celery import app

@app.task
def add(x=3, y=4):
    return x + y

@app.task
def mul(x, y):
    return x * y
复制代码

  4、接下来启动定时任务

    

  5、启动celery

    

 

    然后我们看到执行结果。

 

    

 

 

  

 

 


 
posted @   飞羽小鱼仔  阅读(260)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示