Python异步任务队列

在开发的过程中,有时会需要用到类似下面的这些操作

  • 用户注册时发送认证邮件
  • 带有Web界面的爬虫
  • 定时计划任务

这些任务的共同特点是执行所需的时间较长,但是我们又不希望其阻塞后续的操作。因此我们将这些任务放进任务队列里来运行。

Python常见的异步任务队列实现有功能较丰富的Celery和轻量级的RQ。

RQ

RQ(Redis Queue)是一个基于Redis的轻量级任务队列库,可以轻松地与Python应用进行集成。
它的用法非常简单
创建一个任务

在项目目录下启动一个worker,以开始执行已入队的任务。

此时rq已经在后台监听新任务,运行上面的python脚本,即可得到如下的结果:

Celery

Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统。
Celery经常和RabbitMQ同时提起,但实际上,rabbitmq和celery并不是同一层面的东西。Celery需要存储介质来存储任务(称为broker),可选的broker有rabbitmq, redis, mysql, mongodb等。

创建一个celery任务

调用celery任务

启动worker

终止任务

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

如果你是人类,请点击Grapes...