Django搭配Celery进行异步/定时任务(一)初步搭建
转自:http://blog.csdn.net/samed/article/details/50598371 以下需求场景很常见: 1. 用户点击页面按钮,请求后台进行一系列耗时非常高的操作,页面没有响应/一直Loading,用户体验非常不好。 2. 某些数据需要预先处理,每天凌晨的时候进行运算,大约半小时到1小时才能完成。 3. 进行外部系统的接口数据调用,接口要求在10秒内返回应答报文,但是Django获取数据之后要进行一定的处理,而此处理时间超过3分钟。 …… 基于以上场景,就需要对站点进行异步任务 / 定时任务的处理了。 因为Django接受到请求之后,会阻塞进程,此过程未处理完毕,就无法响应反馈。 解决方案有很多,这里说说我觉得稍微靠谱的思路: 1. 先说针对定时任务,这种解决方案比较多,可以将程序书写成 manage common的方式进行,然后使用crontab调用命令即可 或者使用celery,也采用crontab的方式进行调用。 2. 异步任务,目前比较靠谱的就是celery了。 综上,这里就使用celery的方式进行,manage common的方式改天尝试之后再发文。 python组件: 1. python2.7 2. Django1.7.1 3. celery( amqp-1.4.9 anyjson-0.3.3 billiard-3.3.0.22