什么是Celery?
- Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统
- 专注于实时处理的异步任务队列
- 同时也支持任务调度
如图所示,整个Celery架构由4部分组成:user、broker、workers、task result。其中:
user负责生成需要处理的任务,然后交给broker任务队列,等待被处理,workers可以由多个worker组成,然后从broker中获取需要出处理的任务进行处理,处理完成后,将处理结果放入task result中。
换一种说法:A(user)在不停的做汉堡包,每做好一个汉堡包就将其放在桌子上(broker),桌子上坐着3个人(workers),每个人都从桌子上拿汉堡包吃,没吃完一个就在本子上做上记录(task result)。
大概说明了一下Celery,然后说说在Django中的应用
这里假设一个场景:有一个博客网站,每当有用户访问博客网站的文章时,其文章的被浏览次数就进行加1操作。
对于这种情况,最简单的方法就是在后端实时处理,就是当有用户访问的时候,在后端的业务逻辑中直接对文章的被浏览次数做加1操作,然后将文章返回给前端呈现在用户的面前。但是这种方式有一个较大的问题,就是每次访问都会进行一次加1操作,而对数据库进行写入操作的成本是