是不是异步任务队列?

时间:2014-11-06 06:24:07

标签: asynchronous queue celery

我正在考虑使用芹菜来异步执行我的网站的某些任务(是的,我对这个想法非常陌生,可能会在这个问题上说一些愚蠢的事情,提前抱歉)。我想知道:人们使用什么标准来确定特定任务是否应该与像celery一样的任务队列异步执行vs使用http请求或ajax请求?在阅读了一些博客等之后,人们一直在建议使用任务队列:

  • 用户不需要立即执行的任务
  • 定期任务
  • 防止大量数据库请求(或其他昂贵的任务)一次性执行
  • 汇总任务

所以我想我的问题是:我不应该使用任务队列来执行哪些类型的任务?如果任务没有阻止请求的任何其他部分(不让用户等待)并且不是周期性的,那么使用任务队列仍然有意义吗?聚合数据库修改是否有意义?如果是这样,那究竟是如何节省资源的呢?谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

我一直在考虑这个问题,我的结论是,只有在以下情况下才应该将队列用于任务:

  • 效率提高
  • 任务独立于其他流程
  • 任务很简单
  • 任务重复了很多次

这是一个非常微弱的答案,但如果它开始由比我更了解的人开始讨论它将完成它的工作:)

答案 1 :(得分:0)

添加:

  • 如果您想保证任务的执行(任务队列通常着重于重试)
  • 如果您希望保持在第三方的速率限制内(例如,每秒最多发送10封电子邮件)
  • 如果一项任务占用大量CPU,并且会使其他客户端请求中断到您的主API服务器

第1部分和第2部分here是一个非常好的资源