分布式异步任务队列 Celery + rabbitmq (or redis )

当我们需要处理一些比较耗时的任务时,我们就需要考虑启用“异步”这个概念。
比如以下两种情况:

一,频繁读写
比如说,现在你一条“微博”,如果是使用 push 的机制,那则需要将这条“微博”告知所有关注你的人。
(这里是假设。实际的微博是使用推拉结合的方式)
关注你的人是100,则 insert 100次。
假如你是个大V,关注你的人有100000人,则需要 insert 100000次。
如果使用同步的方式,那恭喜你,你发完一条微博,这个时间够你喝杯咖啡了。

二,使用“不可靠”的服务
这里的不可靠,指的并不是它不能使用,而是指它不稳定。
当你调用第三方的短信接口,app push接口,无法预计调用接口的时间,这次调用,可能使用0.01s,但下次则变成3s。
这在生产环境是完全可能发生的。高并发,网络异常都可能造成这种情况。

如果这个任务不需要及时返回结果,那我们就可以将这些任务丢给后台去处理,某些实时性要求比较高的任务,还是只能同步进行。
常规的使用场景:短信服务、图片处理服务、群发email、第三方接口调用。 继续阅读分布式异步任务队列 Celery + rabbitmq (or redis )