首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

50行Python代码都不到,就可以实现简单的任务队列

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

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

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

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

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

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

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

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

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

工作者进程

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

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

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181024A21SJ900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券