Python Celery调度Go worker
2023-09-14 08:56:56 时间
我们可以用Go写一个计算密集型任务的Worker,然后用Python的Celery beat来调度这个Worker,下面给大家演示一下:
1.编写Go Worker
最好是将计算密集型的任务改造成Go语言版的,这样收益才能最大化。
比如这里,我使用的是上回从1亿减到1的老梗。
PS,别被下面这段代码吓到了,其实大部分是可以去掉的配置项,核心代码就几行。
输入命令:
go run main.go
即可运行该worker
2.编写Python客户端
每5秒调度一次1亿减到1,不过不跑Python worker. 由于Go Worker在运行,这里的minus会被Go Worker消费。
另外请注意,这里的minus函数实际上只是为了能被识别到而编写的,其内容毫无意义,直接写个pass都没问题(因为实际上是Go Worker在消费)。
编写完后,针对go_tasks模块启动beat:
celery -A go_tasks beat
此时,调度器就会调度Go Worker执行任务:
可以看到,我们成功用Python的Celery Beat调度了Go写的Worker!可喜可贺。
接下来可以看看如果单纯用Python的Worker做这样的计算是有多耗时:
启动worker:
celery worker -A python_tasks -l info --pool=eventlet
启动beat调度器:
celery -A python_tasks beat
结果如下:
可以看到,Python从1亿减到1平均需要5.2秒左右的时间,和Go版相差了100倍左右。
如果我们将调度器的频率提高到每秒计算1次,Python版的Worker,其任务队列一定会堵塞,因为Worker消费能力不够强大。相比之下,Go版的Worker可就非常给力了。
相关文章
- BP神经网络求解异或问题(Python实现)
- python随笔(三)
- 轻松自动化---selenium-webdriver(python) (一)
- python之simplejson,Python版的简单、 快速、 可扩展 JSON 编码器/解码器
- 客户要求要使用Python,调用mysql,调用kafka ,没办法,硬着头皮上
- Python网络编程之TCP套接字简单用法示例
- [GO] Install Go
- 使用Python开源库Couler编写和提交Argo Workflow工作流
- [Go] go基础4
- 华为OD机试 - 字符串排序(Java & JS & Python)
- Python语言学习之打印输出那些事:python输出图表和各种吊炸天的字符串或图画、版权声明(如README.md)等之详细攻略
- Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(计算器简单功能)
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Button展示图片事件)
- 【python代码】:能在手机上敲 Python 代码几款App
- 〖Python自动化办公篇⑳〗 - python实现邮件自动化 - 发送html邮件和带附件的邮件
- 【肝帝游戏】手把手教你python处理视频,越学越有趣,全部源码奉上,不信试试?
- 跟我学Python图像处理丨5种图像阈值化处理及算法对比
- Python图像处理丨认识图像锐化和边缘提取的4个算子
- 跟我学Python图像处理丨何为图像的灰度非线性变换
- 太好玩了!我用 Python 制作一款小游戏!
- Python编程:python-attrs模块的简单使用
- Go语言自学系列 | go语言遍历map
- Python一分钟实现CSV文件读写
- python基础===pendulum '''Python datetimes made easy.'''
- python基础===python中文手册
- 【Leetcode刷题Python】328. 奇偶链表
- 【异常】前端ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- linux 下后台运行python脚本(nohup)
- 【Python问题解决】---- ERROR: Could not install packages due to an OSError: [WinError 2] 系统找不到指定的文件。
- 【Python实战】 ---- python 自带的 venv 虚拟环境更新 pip 失败
- Python基础之循环语句
- Mac上搭建Go语言环境及第一个hello.go程序