celery是什么

Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统

专注于实时处理的异步任务队列

同时也支持任务调度

celery的工作流程

1.从消息中间件中取出任务

2.在任务执行单元中执行任务

3.将任务执行的结果进行存储

celery本身不提供消息中间件以及存储任务,但是可以简单的集合第三方提供的服务。我们一般可以选择redis作为执行任务的第三方程序

celery简单使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
1.安装
pip install celery

2.导入后实例化获得一个对象
cel_obj = celery.Celery() #这里面有很多参数简单的说几个必要的
参数:
main #任务名
backend #存放数据结果的位置
broker #存放任务的位置

实例:
import celery
backend = 'redis://127.0.0.1:6379/1' #存放结果的位置
broker = 'redis://127.0.0.1:6379/2' #存放任务的位置
cel_obj = celery.Celery('test',backend=backend,broker=broker)

#使用装饰器的方法将下面的任务管理起来
@cel_obj.task
def test(a,b):
return a+b

3.在终端中输入命令启动celery服务
celery -A 你celery实例化的那个文件 worker --loglevel=info
eg:
celery -A celery_study worker --loglevel=info

4.接下来你只要对那些被管理的命令使用delay()方法,这些任务就会被提交到,产生的结果也会放到对应位置
from celery_study import test
test.delay(1,2) #提交test任务

ps:windos上若启动celery服务出错可以先安装eventlet,然后在命令后添加一个-p参数使用
pip3 install eventlet
celery worker -A celery_task -l info -P eventlet