python3中celery异步框架简单使用+守护进程方式启动


Posted in Python onJanuary 20, 2021

安装celery

sudo pip install celery

实例化 celery

from celery import Celery
app = Celery("testapp")
# 导入配置
app.config_from_object('celery_tasks.config')
 
# 自动添加任务
app.autodiscover_tasks(["celery_tasks.test","celery_tasks.test2"])

简单配置

# 任务队列的地址
broker_url = "redis://127.0.0.1/14"
# 任务处理结果的保存地址[如果不需要接收任务处理结果,那么,可以不设置下面]
result_backend = "redis://127.0.0.1/15"

文件目录如下

.
├── config.py
├── main.py
├── test
│  └── tasks.py
└── test2
  ├── __init__.py
  └── tasks.py

一个应用一个文件夹

异步任务的文件名必须是tasks.py

在需要执行该任务的地方导入该任务

from celery_tasks.test.tasks import test
from celery_tasks.test2.tasks import test as test2
 
test_id = test.delay()
test2_id = test2.delay()
 
print(test_id)
print(test2_id)

调用该异步任务会马上放回一个id,执行结果可以在result_backend中通过id找到

/home/python/.virtualenvs/kol_site_py3/bin/python /home/python/projects/supervisor/supervisor/celery_tasks/test.py
a6e13745-c05b-496d-bbbe-2b636f84009c
d92d50b4-0ba1-4b05-9e96-eeb92a854929
 
Process finished with exit code 0
127.0.0.1:6379[15]> keys *
 1) "celery-task-meta-2a9c0a4b-5b40-4121-9986-a8430fc6b235"
 2) "celery-task-meta-0f16e227-393f-48ea-b41b-3419df84528e"
 3) "celery-task-meta-fbf31a20-6eee-4298-8a91-214d2e5c9399"
 4) "celery-task-meta-61f012c0-bde1-4344-9e1c-b5e8a7b93902"
 5) "celery-task-meta-074a659f-d76f-4818-8516-f098d1b900ed"
 6) "celery-task-meta-8a89c4db-f2e2-484b-94ee-e1af9911c69f"
 7) "celery-task-meta-0012966d-e8fd-483b-b8ac-d160d65c8221"
 8) "celery-task-meta-f97a452d-3812-4950-bfd9-02ff9e69a4b2"
 9) "celery-task-meta-4bebe710-7725-43f5-b0f7-9a35b57ba3b1"
10) "celery-task-meta-4b1cca23-31c3-4c82-a99f-bbe306846191"
11) "celery-task-meta-4cdf3a68-7df4-4bdf-8f54-abe6be83df3a"
12) "celery-task-meta-d92d50b4-0ba1-4b05-9e96-eeb92a854929"
13) "celery-task-meta-17265693-ba36-4f6c-80c8-d89a52f549f7"
14) "celery-task-meta-d62bbf16-6469-40a7-bc25-61b553014d76"
15) "celery-task-meta-4cca0f47-2f2d-45e6-8341-52264e50d969"
16) "celery-task-meta-1fd1e52a-00e1-486a-a224-36bd0fbb5d4a"
17) "celery-task-meta-af3b9536-91a6-4ae3-ab9b-59755bfb4883"
18) "celery-task-meta-b5710e2a-1905-44fd-8b11-4d7057113291"
19) "celery-task-meta-bebeb902-cce1-4edb-bdac-734ed6dc16ae"
20) "celery-task-meta-2771b961-694f-4727-9b19-07928834475e"
21) "celery-task-meta-8c683476-5cec-4933-8370-73793d656e23"
22) "celery-task-meta-6c8e6763-a416-4c02-9689-a0bb38bf26a6"
23) "celery-task-meta-7a4edb71-b13b-4f0f-b882-408716bb3ba9"
24) "celery-task-meta-4e368ca3-f686-4215-aed7-f0c6463cfac9"
25) "celery-task-meta-757f196d-c377-4f38-982d-700fa4f45c6b"
26) "celery-task-meta-094ea32e-5cf8-41c5-bf63-fb629e0e1e67"
27) "celery-task-meta-2e1f2188-0806-41f1-8eb8-4a0f73ec2aca"
28) "celery-task-meta-fd7e8fea-c738-4d49-b13d-c5d782eeaa96"
29) "celery-task-meta-e476f036-7192-4687-b9b7-c6a06556b4c3"
30) "celery-task-meta-2463c15f-5903-4381-8646-1b2aa6418ca0"
31) "celery-task-meta-a6e13745-c05b-496d-bbbe-2b636f84009c"
32) "celery-task-meta-f4f2d940-3e16-4d78-a0c4-3766eb91c908"
33) "celery-task-meta-5a1eaba8-0675-4e82-aedc-fee801ff31ef"
127.0.0.1:6379[15]>

启动celery的方法

# 最终在终端运行这个main文件
celery -A 应用包名 worker -l info
 
# 我们当前项目,在后端项目根目录下运行
celery -A celery_tasks.main worker -l info
# 守护进程
celery multi start w1 -A celery_tasks.main -l info --logfile=./celerylog.log
# 停止和重启 分别将 start 改为 stop / restart

守护进程的另一种方式,使用supervisor,这是一个管理进程的工具,这种启动方式就是用supervisor接管celery。

到此这篇关于python3中celery异步框架简单使用+守护进程方式启动的文章就介绍到这了,更多相关python3 celery异步使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python从sqlite读取并显示数据的方法
May 08 Python
使用PyCharm配合部署Python的Django框架的配置纪实
Nov 19 Python
详谈Python基础之内置函数和递归
Jun 21 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
数据清洗--DataFrame中的空值处理方法
Jul 03 Python
Python Django实现layui风格+django分页功能的例子
Aug 29 Python
Python动态声明变量赋值代码实例
Dec 30 Python
python 解决flask 图片在线浏览或者直接下载的问题
Jan 09 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
Python如何将装饰器定义为类
Jul 30 Python
python批量生成身份证号到Excel的两种方法实例
Jan 14 Python
Django+Django-Celery+Celery的整合实战
Jan 20 #Python
详解Python Celery和RabbitMQ实战教程
Jan 20 #Python
详解python3类型注释annotations实用案例
Jan 20 #Python
python-jwt用户认证食用教学的实现方法
Jan 19 #Python
使用Python爬虫爬取小红书完完整整的全过程
Jan 19 #Python
python 自动识别并连接串口的实现
Jan 19 #Python
python爬取抖音视频的实例分析
Jan 19 #Python
You might like
域名查询代码公布
2006/10/09 PHP
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
php array_map()函数实例用法
2021/03/03 PHP
javascript css float属性的特殊写法
2008/11/13 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
基于Python的身份证号码自动生成程序
2014/08/15 Python
Python制作CSDN免积分下载器
2015/03/10 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
pygame实现五子棋游戏
2019/10/29 Python
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
linux面试题参考答案(6)
2014/08/29 面试题
MySQL创建索引需要了解的
2021/04/08 MySQL