刨析django----celery
目录
- 简介
- 核心
- 功能
- Celery配置项
- web框架集成
- 安装
- broker
- rabbitmq
- 在包中使用Celery
- celery定时任务
- 后台启动worker进程
简介
celery是基于python的分布式任务队列,一款简单、灵活、可靠的分布式系统。可以在一台机器上运行,也可以在多台机器上运行。
任务队列一般用于线程或计算机之间分配工作的一种机制。
核心
- task, 耗时的任务、定时任务
- broker, 消息中间件,如redis/rabbitmq
- worker, 执行者,并发执行(eventlet,gevent)
- backend, 存储任务的结果,如redis/memcached/Django ORM;
默认禁用,如果不需要结果则禁用;局部禁用 结果
@app.task(ignore_result=True)
def task():return 5
- beat, 定时任务的调度器
功能
- 监控集群状态
- 任务调度
- 内存泄漏保护
Celery配置项
app = Celery("myworker")
# 消息队列
app.conf.broker_url = ""
# 结果后台
app.conf.result_backend = ""
# 时区
app.conf.timezone = "Asia/Shanghai"# 保存结果过期 s
app.conf.result_expires = 200
web框架集成
flask,
django,
安装
pip install celery==4.4.7# 同时安装依赖
pip install 'celery[gevent]'
pip install 'celery[redis]'
broker
rabbitmq
生产环境中的首先
# 只需简单配置
broker_url = 'amqp://myuser:mypassword@localhost:5672/myvhost'
rabbitmq官网
Ubuntu安装:
$ sudo apt-get install rabbitmq-server
docker运行:
$ docker run -d -p 5462:5462 rabbitmq
https://www.celerycn.io/ru-men/celery-chu-ci-shi-yong
在包中使用Celery
python3中优先绝对路径导入,然后相对路径
- 目录结构
- 代码
celery.py
"""基础设置
"""
from celery import Celery# 实例化
app = Celery("my_worker", # worker名称broker="redis://:laufing@127.0.0.1:6379/5", # 消息队列backend="redis://:laufing@127.0.0.1:6379/6", # 结果后端,默认禁用include=["pkg.tasks"], # celery启动时,需导入的模块)# 更新配置
app.conf.update(result_expires = 3600, # 结果过期时间
)if __name__ == "__main__":app.start()
tasks.py
"""创建任务函数
"""
from .celery import app# 创建任务函数
@app.task
def task1():print("简单打印结果。。。")return 5@app.task(ignore_result=True) # 当前任务禁用结果
def task2():print("局部禁用结果")return 10
启动worker进程
# windows 使用eventlet、gevent单线程的高并发---协程
celery -A pkg worker -l info -P eventlet -n laufing
# -A 应用
# -l log级别
# -P 并发形式
# -n 主机名 , 一台主机一个名字,起一个worker进程# linux 默认prefork 进程池
celery -A pkg worker -l info
查看worker正在处理的任务:
# 检查集群中所有的worker正在执行的任务
celery -A pkg inspect active# 监视 指定某些worker 正在执行的任务
celery -A pkg inspect active --destination=celery@tom.com, # 监控worker及执行的任务
celery -A pkg control enable_events
# 查看worker执行状况
celery -A pkg events --dump
# 禁用事件
celery -A pkg control disable_events# 查看集群中的worker列表
celery -A pkg status
celery定时任务
- 配置 定时任务调度器
# celery.py 内部# 定时任务调度器
beat_shedule = {"task1":{"task": "pkg.tasks.func1", # 任务函数"schedule": crontab(minute="*/1"), # 每1分钟执行一次,将任务提交到任务队列"args": (), # 任务函数的参数},"task2": {},"task3": {},
}# 更新配置
app.conf.update(beat_schedule = beat_schedule
)
- 启动 定时任务调度器
# 启动, 会定时提交任务到异步队列
celery -A pkg beat -l info# 启动worker进程
celery -A pkg worker -l info -P eventlet -n laufing
定时任务遇到的问题
- 解决方案
删除之前启动定时任务的相关文件
以上可以直接在Django中使用Celery的定时任务
后台启动worker进程
linux下:, 注意window平台不支持
# 后台启动 multi start
celery -A pkg multi start my_worker -l info # 后台 重启 multi restart
# 后台 异步停止 multi stop
# 后台同步停止 multi stopwait
后台启动的worker, 没有执行任务
刨析django----celery相关推荐
- 刨析django----Nginx反向代理与负载均衡
目录结构 Nginx是什么 正向代理与反向代理 Nginx的安装 window安装 linux安装 配置反向代理 Ubuntu1804下遇到的问题 Nginx反向代理案例 Ubuntu1804 配置N ...
- FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析
FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析 怎么查找就绪任务中优先级最高的? tasks.c中声明了一个全局变量 uxTopReadyPriority,任务从其他状态进入就绪 ...
- spring源码刨析总结
spring源码刨析笔记 1.概述 spring就是 spring Framework Ioc Inversion of Control(控制反转/反转控制) DI Dependancy Inject ...
- springMvc源码刨析笔记
springMvc源码刨析笔记 MVC 全名是 Model View Controller,是 模型(model)-视图(view)-控制器(controller) 的缩写, 是⼀种⽤于设计创建 We ...
- zookeeper笔记+源码刨析
会不断更新!冲冲冲!跳转连接 https://blog.csdn.net/qq_35349982/category_10317485.html zookeeper 1.介绍 Zookeeper 分布式 ...
- MapReduce源码刨析
MapReduce编程刨析: Map map函数是对一些独立元素组成的概念列表(如单词计数中每行数据形成的列表)的每一个元素进行指定的操作(如把每行数据拆分成不同单词,并把每个单词计数为1),用户可以 ...
- 神经元细胞结构刨析(持续更新)
神经元细胞结构刨析 一.简要功能组件 二. 神经元内部的成分分析 细胞核 轴突 树突 突触 线粒体 内质网 其他 三.神经元信号分类 电信号 化学信号 四.神经胶质 星形胶质细胞 少突胶质细胞 五.神 ...
- 2022网易最新版本将军令算法刨析(2)
大家好,我是任雪飘!今天我们接着昨天的刨析,将一下so层的实现! 准备工作 一台安卓手机 ida 工具地址: 点击直达 提取码:w28g 网易将军令5.1.1 apk地址: 点击直达 提取码:e5wa ...
- 某易—将军令动态刨析算法(1)
某易-将军令动态刨析算法(1) 我是任雪飘,一个技术渣渣,可以加我星球一起交流! 我们刷新一下,得到的就是30秒会更新一次,这里我们开始进行方法刨析. 开始记录方法调用过程 点击刷新动态码后关闭记录* ...
- C++异常处理机制由浅入深, 以及函数调用汇编过程底层刨析. C++11智能指针底层模拟实现
一. 异常 1.1.异常的编程模型和基本使用 咱得用一用, 解释一下上述的模型 double Div(int a, int b) {if (b == 0) throw "Zero Di ...
最新文章
- 计算机应用基础网络统考操作,全国网络统考《计算机应用基础》完整最新题库及答案[整理].pdf...
- Android面试知识点(转)
- 写给 Web 开发者的深度学习教程 - 向量化 矩阵
- 为什么运行了java文件老是404_java – 为什么Spring MVC用404响应并报告“在...
- 链路追踪在ERP系统中的应用实践
- 最优化理论与算法笔记
- 从数据类型 nvarchar 转换为 numeric 时出错_JS入门篇(三):javascript的数据类型详解...
- php 反射 调用私有方法,PHP通过反射方法调用执行类中的私有方法
- 机器视觉:偏振镜光学原理和在机器视觉中的应用
- 最新:2021年度泰晤士世界大学学科排名公布
- 如何修改SAO用户密码
- windows环境下,搭建RTSP视频推流服务器
- 联想电脑进入BIOS曾经走过的“坑”
- 人体十二经络的走向动态图,人手一份!
- SMTP 发送邮件错误码和解决方法
- WORD转PDF格式快捷方法(转贴)
- 将uni-app项目编译为H5网站
- xcpc近年铜牌题补题路
- Endnote导入知网、EI、IEEE数据库文献
- 教你怎样维持异地恋!