Celery的使用(1)---简单配置与初次运行
前言
celery是一个基于python开发的简单、灵活且可靠的分布式任务队列框架, 是一个分布式队列的管理工具, 可以用 Celery 提供的接口快速实现并管理一个分布式的任务队列.。它采用了典型的生产者-消费者模型,主要由三部分组成:
-
消息队列broker:broker实际上就是一个MQ队列服务,可以使用Redis、RabbitMQ等作为broker;
-
处理任务的消费者workers:broker通知worker队列中有任务,worker去队列中取出任务执行,每一个worker就是一个进程;
-
存储结果的backend:执行结果存储在backend,默认也会存储在broker使用的MQ队列服务中,也可以单独配置用何种服务做backend;
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键,复制刚才的代码粘贴进这个文件,按下ESC,SHIFT+:,输入wq保存退出,分别输入以下命令。
chmod +x tasks.py #给tasks.py赋予可执行权限
celery -A tasks worker --loglevel=info ##运行celery
如果顺利的话,你将看到如下界面:
运行程序
忽略最后一行,这就代表启动成功了,接着你可以在你的window开发环境上运行程序了,运行后应该能看到如下:
Linux:
可以清楚的看到celery在Received到task后很快woker就开始工作,返回了tasks.add执行success,tasks即我们的模块名称,add为我们定义的方法名,success代表执行成功,后面的一串小数即为执行的时间,7为我们想要的执行结果。
Windows:
而我们pycharm下同样也返回了结果7,执行成功!!!
后续
这时如果你有兴趣的话可以登录redis查看broker和backend:
redis-cli #连接redis客户端
select database_num #为你在前面配置的worker和backend的数据库编号
keys * #查看执行过的任务编号
仔细查看最后标红的一行,如果与前面运行程序中的celery结果图对比就会发现,后面的编号其实是一样的,可以断定这就是我们刚才运行的任务编号,这时就可以根据这个key查询celery返回的信息。
截图可能不太清晰,但依然能看到状态status是success,result是7,task_id是上图标红的那串。
结束
本文介绍了怎么安装运行celery,当然本文中所使用的的add函数是极为简单的,后续将更新配置文件化和较常用的celery发送邮件、celery定时任务,更多内容请点击从今天开始种树。
推荐阅读
-
【maven的使用】1maven的概念与配置
-
C++ 实验二 NO.1_(3) 1:熟悉DEV环境,练习自己的第一个程序使用DEV集成环境来编辑,运行简单的数据输入和运算实验。(3)编写一个程序,要求:提示输入3个数;显示这3个数,求他们的平均值
-
Celery的使用(1)---简单配置与初次运行
-
详解axios在vue中的简单配置与使用
-
axios在vue中的简单配置与使用
-
CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置
-
InteliiJ IDEA的安装配置与简单使用
-
【maven的使用】1maven的概念与配置
-
详解axios在vue中的简单配置与使用
-
InteliiJ IDEA的安装配置与简单使用