celery异步任务框架


celery异步任务框架

文章插图
 
【celery异步任务框架】目录
  • Celery
  • 一、官方
  • 二、Celery异步任务框架Celery架构图消息中间件任务执行单元任务结果存储
  • 三、使用场景
  • 四、Celery的安装配置
  • 五、两种celery任务结构:提倡用包管理,结构更清晰
  • 七、Celery执行异步任务包架构封装
  • 八、基本使用celery.py 基本配置tasks.py 添加任务add_task.py 添加立即、延迟任务get_result.py 获取结果
  • 九、高级使用celery.py 定时任务配置(循环的)tasks.pyget_result.py
  • 十、django中使用(更新轮播图案例)redis的配置接口缓存views.py启动服务celery.pytasks.py
 
Celery一、官方Celery 官网:http://www.celeryproject.org/
Celery 官方文档英文版:http://docs.celeryproject.org/en/latest/index.html
Celery 官方文档中文版:http://docs.jinkan.org/docs/celery/
二、Celery异步任务框架"""1)可以不依赖任何服务器,通过自身命令,启动服务(内部支持socket)2)celery服务为为其他项目服务提供异步解决任务需求的注:会有两个服务同时运行,一个是项目服务,一个是celery服务,项目服务将需要异步处理的任务交给celery服务,celery就会在需要时异步完成项目的需求人是一个独立运行的服务 | 医院也是一个独立运行的服务 正常情况下,人可以完成所有健康情况的动作,不需要医院的参与;但当人生病时,就会被医院接收,解决人生病问题 人生病的处理方案交给医院来解决,所有人不生病时,医院独立运行,人生病时,医院就来解决人生病的需求"""Celery架构图Celery的架构由三部分组成,消息中间件(message broker)、任务执行单元(worker)和 任务执行结果存储(task result store)组成 。
celery异步任务框架

文章插图
 
消息中间件Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成 。包括,RabbitMQ, Redis等等
任务执行单元Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中 。
任务结果存储Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, redis等
三、使用场景异步执行:解决耗时任务
延迟执行:解决延迟任务
定时执行:解决周期(周期)任务
四、Celery的安装配置pip install celery
消息中间件:RabbitMQ/Redis
App=Celery('任务名', broker='xxx', backend='xxx')
五、两种celery任务结构:提倡用包管理,结构更清晰# 如果 Celery对象:Celery(...) 是放在一个模块下的# 1)终端切换到该模块所在文件夹位置:scripts# 2)执行启动worker的命令:celery worker -A 模块名 -l info -P eventlet# 注:windows系统需要eventlet支持,linux与macOS直接执行:celery worker -A 模块名 -l info# 注:模块名随意# 如果 Celery对象:Celery(...) 是放在一个包下的# 1)必须在这个包下建一个celery.py的文件,将Celery(...)产生对象的语句放在该文件中# 2)执行启动worker的命令:celery worker -A 包名 -l info -P eventlet# 注:windows系统需要eventlet支持,Linux与MacOS直接执行:celery worker -A 模块名 -l info# 注:包名随意放在根目录下就行:
celery异步任务框架

文章插图
 
七、Celery执行异步任务包架构封装project├── celery_task# celery包│├── __init__.py # 包文件│├── celery.py# celery连接和配置相关文件,且名字必须交celery.py│└── tasks.py# 所有任务函数├── add_task.py# 添加任务└── get_result.py# 获取结果八、基本使用celery.py 基本配置# 1)创建app + 任务# 2)启动celery(app)服务:# 非windows# 命令:celery worker -A celery_task -l info# windows:# pip3 install eventlet# celery worker -A celery_task -l info -P eventlet# 3)添加任务:手动添加,要自定义添加任务的脚本,右键执行脚本# 4)获取结果:手动获取,要自定义获取任务的脚本,右键执行脚本from celery import Celery# 无密码broker = 'redis://127.0.0.1:6379/1'backend = 'redis://127.0.0.1:6379/2'# 有密码:broker = 'redis://:123@127.0.0.1:6379/1'backend = 'redis://:123@127.0.0.1:6379/2'app = Celery(broker=broker, backend=backend, include=['celery_task.tasks'])'''broker : 任务仓库backend : 任务结果仓库include :任务(函数)所在文件'''


推荐阅读