当你的项目需要一个任务队列时,当然你会先想到celery,然后你花了三个月弄懂了基本的配置选项,你觉得已经生无可恋了。也许你可以使用简单一点的任务队列,如huey和rq。
或者,你自己写一个如何?你能做到的!
首先,我们使用redis作为消息的存储组件。我们不需要单独安装redis,我们用docker来获取一个redis。打开终端,然后运行
对,你做到了。然后我们创建一个Python虚拟环境来管理依赖库。我们需要redis的Python链接库和dill。
很好。我们的代码使用dill来把要执行的函数序列化为一个任务,然后存储到redis中。
客户端部分(任务队列的客户端,不是APP)
客户端把消息发送到任务队列中。打开一个编辑器,创建一个名为client.py的文件。然后我们定义要发送给worker(工作者进程)的任务,例如:
现在我们需要配置我们的redis客户端:
这些都完成后,我们开始生产一些任务,并且把它推送到任务队列中
工作者进程
工作者进程实际地完成任务。它们就是盯着消息队列,队列中有任务了就抓取下来,把任务完成,然后告诉队列我完成了,删除这个任务吧。就这么简单。打开编辑器,创建一个名为worker.py的文件,然后输入下面内容:
你已经完成了所以的代码,运行这个工作者进程吧:
你甚至可以在其他机器上运行,任务队列是天生支持分布式的。然后再运行客户端创造一些任务:
50行代码都不到,是不是很佩服自己?
领取专属 10元无门槛券
私享最新 技术干货