功能描述
它是一个简单、灵活、可靠的用于处理大量消息的分布式系统。
功能主要有三个:执行异步任务,执行延迟任务,执行定时任务。
举个例子,你现在有两个项目、一个项目用于爬取数据,一个项目用于分析数据,如何在数据爬取后将任务交给另一个项目进行分析呢?这种场景下就可以使用celery进行处理。
官网
英文文档
一个噩耗消息:
Celery is a project with minimal funding, so we don’t support Microsoft Windows. Please don’t open any issues related to that platform.
Celery是一个资金较少的项目,因此我们不支持Microsoft Windows。请不要提出与该平台有关的任何问题。
尽管官方提示不支持windows,但是你仍然可以进行使用,这可能需要一些其他模块的辅助。
celery是单独的服务,并不依赖于其他框架,就像Django一样你只要安装了它就可以通过自身命令启动服务。
架构介绍
celery架构由三部分组成,分别是消息中间件message broker,任务执行单元worker与任务执行结果存储task result store,如下图所示:
[图片]
celery是一个独立运行的服务,内置socket,如果想使用它你需要做这几件事情:
安装celery环境框架,配置broker与backend,启动celery服务
添加任务到borker,worker就会自动的在后台执行任务
任务执行完成后,通过backend获取结果
基本使用安装使用
安装模块,我装的旧版,新版5.x的有些摸不着头脑:
pip3 install celery==4.4.7
新建一个python包,任意名字。
project
├── celery_task # celery包
│ ├── __init__.py # 包文件
│ ├── celery.py # celery连接和配置相关文件,且名字必须叫celery.py
│ └── tasks.py # 所有任务函数
├── add_task.py # 添加任务
└── get_result.py # 获取结果
在celery.py中配置borker与backend:
from celery import Celery
broker = "redis://127.0.0.1:6379/1" # broker任务队列
backend = "redis://127.0.0.1:6379/2" # 结构存储,执行完的结果存在这
# 如果有密码:"redis//:password@127.0.0.1:6379/2"
app = Celery(
__name__, # 取名,随便取
broker=broker,
backend=backend,
include=[
"celery_tasks.task", # 第一个任务,必须是包名.文件名
]
)
