在开发的过程中,有时会需要用到类似下面的这些操作
- 用户注册时发送认证邮件
- 带有Web界面的爬虫
- 定时计划任务
这些任务的共同特点是执行所需的时间较长,但是我们又不希望其阻塞后续的操作。因此我们将这些任务放进任务队列里来运行。
Python常见的异步任务队列实现有功能较丰富的Celery和轻量级的RQ,本文以celery为例。
Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统。
Celery经常和RabbitMQ同时提起,但实际上,RabbitMQ和celery并不是同一层面的东西。Celery需要存储介质来存储任务(称为broker),可选的broker有RabbitMQ, redis, mysql, mongodb等。