50行Python代码实现简单的任务队列

2017 年 7 月 6 日 Python程序员

当你的项目需要一个任务队列时,当然你会先想到celery,然后你花了三个月弄懂了基本的配置选项,你觉得已经生无可恋了。也许你可以使用简单一点的任务队列,如huey和rq。

或者,你自己写一个如何?你能做到的!

首先,我们使用redis作为消息的存储组件。我们不需要单独安装redis,我们用docker来获取一个redis。打开终端,然后运行

对,你做到了。然后我们创建一个Python虚拟环境来管理依赖库。我们需要redis的Python链接库和dill。

很好。我们的代码使用dill来把要执行的函数序列化为一个任务,然后存储到redis中。


客户端部分(任务队列的客户端,不是APP)

客户端把消息发送到任务队列中。打开一个编辑器,创建一个名为client.py的文件。然后我们定义要发送给worker(工作者进程)的任务,例如:

现在我们需要配置我们的redis客户端:

这些都完成后,我们开始生产一些任务,并且把它推送到任务队列中

工作者进程

工作者进程实际地完成任务。它们就是盯着消息队列,队列中有任务了就抓取下来,把任务完成,然后告诉队列我完成了,删除这个任务吧。就这么简单。打开编辑器,创建一个名为worker.py的文件,然后输入下面内容:

你已经完成了所以的代码,运行这个工作者进程吧:

你甚至可以在其他机器上运行,任务队列是天生支持分布式的。然后再运行客户端创造一些任务:

50行代码都不到,是不是很佩服自己?


英文原文:https://github.com/JoseTomasTocino/yotaq

译者:诗书塞外


登录查看更多
0

相关内容

Redis 是一个使用 C 语言写成的,开源的 key-value 数据库。
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
160+阅读 · 2020年5月14日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
105+阅读 · 2020年5月3日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
【干货】用BRET进行多标签文本分类(附代码)
专知会员服务
84+阅读 · 2019年12月27日
计算机视觉最佳实践、代码示例和相关文档
专知会员服务
17+阅读 · 2019年10月9日
5大必知的图算法,附Python代码实现
AI100
4+阅读 · 2019年9月10日
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
100行Python代码,轻松搞定神经网络
大数据文摘
4+阅读 · 2019年5月2日
10行代码实现目标检测,请收下这份教程
教程 | 从头开始了解PyTorch的简单实现
机器之心
20+阅读 · 2018年4月11日
教你用Python进行自然语言处理(附代码)
数据派THU
6+阅读 · 2018年3月28日
Arxiv
3+阅读 · 2018年6月14日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
160+阅读 · 2020年5月14日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
105+阅读 · 2020年5月3日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
【干货】用BRET进行多标签文本分类(附代码)
专知会员服务
84+阅读 · 2019年12月27日
计算机视觉最佳实践、代码示例和相关文档
专知会员服务
17+阅读 · 2019年10月9日
相关资讯
5大必知的图算法,附Python代码实现
AI100
4+阅读 · 2019年9月10日
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
100行Python代码,轻松搞定神经网络
大数据文摘
4+阅读 · 2019年5月2日
10行代码实现目标检测,请收下这份教程
教程 | 从头开始了解PyTorch的简单实现
机器之心
20+阅读 · 2018年4月11日
教你用Python进行自然语言处理(附代码)
数据派THU
6+阅读 · 2018年3月28日
Top
微信扫码咨询专知VIP会员