PythonCelery怎么调度Goworker
本篇内容主要讲解“Python Celery怎么调度Go worker”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python Celery怎么调度Go worker”吧!
为吴川等地区用户提供了全套网页设计制作服务,及吴川网站建设行业解决方案。主营业务为成都网站制作、网站建设、吴川网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
我们可以用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可就非常给力了。
因此,如果你的项目中有这种计算密集型的任务,可以尝试将其提取成Go版本试试,说不定有惊喜呢。
到此,相信大家对“Python Celery怎么调度Go worker”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
网页标题:PythonCelery怎么调度Goworker
网页地址:http://ybzwz.com/article/peepip.html