Celery调度器的使用

python开发调度去

代码如下:

from celery import Celery
from celery.schedules import crontab
import datetime
#这个类放配置信息
class Config():
    broker_url = 'redis://127.0.0.1/1' #这个代表本地redis 的 1 数据库,做为celery的发布端
    result_backend = 'redis://127.0.0.1/2' #这个代表本地redis 的 2 数据库,做为celery的返回端
    timezone = 'Asia/Shanghai'
    beat_schedule = {
        '任务名字':{
            'task':'celery01.func',   #这里写要执行的方法,因为是在py文件下的,所以需要带py文件名称
            'schedule':crontab()    #这里代表什么时候执行,如果不写就代表默认一分钟一次
        },
        '日报-每天执行一次': {
            'task': 'celery01.daily',  # 这里写要执行的方法,因为是在py文件下的,所以需要带py文件名称
            'schedule': crontab(minute='10', hour='0')  #每天凌晨10分钟开始执行
        },
        '周报-每周执行一次': {
            'task': 'celery01.weekly',  # 这里写要执行的方法,因为是在py文件下的,所以需要带py文件名称
            'schedule': crontab(minute='30', hour='0', day_of_week=1)  #每周一凌晨30分钟开始执行,这里0代表周日,1代表周一 ...
        }
    }

#固定写法
app = Celery('tasks')   #实例化app
app.config_from_object(Config) # 加载配置项

#这个方法就是被调起来的程序
#加一个装饰器
@app.task
def func():
    print(datetime.datetime.now())
#日报函数
@app.task
def daily():
    pass
#周报函数
@app.task
def weekly():
    pass


执行代码

1.启动任务发布端

celery -A server beat

2.启动结果返回端

celery -A server worker

错误提示:

如果发生如下错误:
在这里插入图片描述
解决方法:
把celery 版本改为5.0.5 然后执行以下步骤
1.pip install eventlet
2.在代码文件里加入os.environ.setdefault(‘FORKED_BY_MULTIPROCESSING’,‘1’)
3.然后执行celery -A server worker -l info -P eventlet替换原来的celery -A server worker

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值