欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Celery的使用(1)---简单配置与初次运行

程序员文章站 2022-07-06 20:28:24
...

前言

celery是一个基于python开发的简单、灵活且可靠的分布式任务队列框架, 是一个分布式队列的管理工具, 可以用 Celery 提供的接口快速实现并管理一个分布式的任务队列.。它采用了典型的生产者-消费者模型,主要由三部分组成:

  • 消息队列broker:broker实际上就是一个MQ队列服务,可以使用Redis、RabbitMQ等作为broker;

  • 处理任务的消费者workers:broker通知worker队列中有任务,worker去队列中取出任务执行,每一个worker就是一个进程;

  • 存储结果的backend:执行结果存储在backend,默认也会存储在broker使用的MQ队列服务中,也可以单独配置用何种服务做backend;

Celery的使用(1)---简单配置与初次运行

celery安装

pip install celery

celery 简单运行

创建文件

安装完成后在自己的APP下创建一个tasks.py文件,名字最好就是tasks,不要随意更改,有多个app则每个app下都可以创建一个task.py(前提是有需要的话)目录结构如下,本文已django为例:

my_demo
	|--func_app
		|-- admin.py
		|-- apps.py
		|-- __init__.py
		|-- models.py
		|-- tasks.py
		|-- tests.py
		|-- urls.py
		|-- views.py
	|--my_demo
		|-- celery.py
    	|-- __init__.py
    	|-- settings.py
    	|-- urls.py
    	|-- wsgi.py
tasks.py
from celery import Celery
app = Celery('tasks', broker='redis://:aaa@qq.com:port/database_num',backend='redis://:aaa@qq.com:port/database_num')
#第一个次数‘tasks’是当前模块的名字,第二个参数是broker代理的url,这里选用了redis

第一个参数 ‘tasks’ 是当前模块的名字,第二个参数是消息队列broker的url,第三个参数是存放结果的backend,这里都选用了redis(也可以是RabbitMQ)。

编写第一段celery代码

tasks.py
from celery import Celery
app = Celery('tasks', broker='redis://:aaa@qq.com:port/database_num',backend='redis://:aaa@qq.com:port/database_num')
@app.task
def add(x, y):
	return x + y
if __name__ == '__main__':
    res = add.delay(3,4)
    print(res.result)#打印结果

定义一个简单的add函数,使用delay()方法进行调用,res.result 返回celery计算的结果,先不要急着运行,这样肯定运行不成功的。

为运行程序准备环境(已经具备了可跳过)

接下来我们去坐准备工作,一般我们的服务都会部署到linux服务器上,假设你现在已经有一台自己的服务器,那么请使用SecureCRT或者putty连接上机器,还是先安装redis和celery,快捷安装如下:

Redis安装-------10分钟安装配置Redis

pip install celery

创建一个目录专门用于执行celery程序(位置随你高兴),再创建一个tasks.py:

mkdir celery_code#创建目录
cd celery_code#进入目录下面
touch tasks.py #创建tasks.py文件,功能与刚才上面的一样
vi tasks.py  #打开文件

运行celery

vi tasks.py 后按下键盘上的i键,复制刚才的代码粘贴进这个文件,按下ESCSHIFT+:,输入wq保存退出,分别输入以下命令。

chmod +x tasks.py  #给tasks.py赋予可执行权限
celery -A tasks worker --loglevel=info    ##运行celery

如果顺利的话,你将看到如下界面:
Celery的使用(1)---简单配置与初次运行

运行程序

忽略最后一行,这就代表启动成功了,接着你可以在你的window开发环境上运行程序了,运行后应该能看到如下:
Linux:
Celery的使用(1)---简单配置与初次运行
可以清楚的看到celery在Received到task后很快woker就开始工作,返回了tasks.add执行success,tasks即我们的模块名称,add为我们定义的方法名,success代表执行成功,后面的一串小数即为执行的时间,7为我们想要的执行结果。

Windows: Celery的使用(1)---简单配置与初次运行
而我们pycharm下同样也返回了结果7,执行成功!!!

后续

这时如果你有兴趣的话可以登录redis查看broker和backend:

redis-cli #连接redis客户端
select database_num  #为你在前面配置的worker和backend的数据库编号
keys *  #查看执行过的任务编号

Celery的使用(1)---简单配置与初次运行
仔细查看最后标红的一行,如果与前面运行程序中的celery结果图对比就会发现,后面的编号其实是一样的,可以断定这就是我们刚才运行的任务编号,这时就可以根据这个key查询celery返回的信息。

Celery的使用(1)---简单配置与初次运行
截图可能不太清晰,但依然能看到状态status是success,result是7,task_id是上图标红的那串。

结束

本文介绍了怎么安装运行celery,当然本文中所使用的的add函数是极为简单的,后续将更新配置文件化和较常用的celery发送邮件、celery定时任务,更多内容请点击从今天开始种树