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

  • A+
所属分类:安全博客
摘要

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


前言

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://:[email protected]:port/database_num',backend='redis://:[email protected]: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://:[email protected]:port/database_num',backend='redis://:[email protected]: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定时任务,更多内容请点击从今天开始种树

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: