Asynchronous 异步任务队列与否?

Asynchronous 异步任务队列与否?,asynchronous,queue,celery,Asynchronous,Queue,Celery,我正在考虑使用芹菜为我的网站异步执行一些任务(是的,我对这个想法非常陌生,可能会在这个问题上说一些愚蠢的话,提前道歉)。我想知道:人们用什么标准来决定一个特定的任务是否应该使用芹菜这样的任务队列异步执行,而不是使用http请求或ajax请求?在阅读了一些博客等之后,人们建议使用任务队列: 用户不需要立即执行的任务 周期性任务 防止大量数据库请求(或其他昂贵的任务)同时执行 聚合任务 所以我想我的问题是:什么类型的任务不应该使用任务队列?如果一个任务没有占用请求的任何其他部分(没有让用户等待)

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

  • 用户不需要立即执行的任务
  • 周期性任务
  • 防止大量数据库请求(或其他昂贵的任务)同时执行
  • 聚合任务

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

我已经对此进行了更多的研究,我的结论是,只有在以下情况下,才应将队列用于任务:

  • 效率提高了
  • 该任务独立于其他进程
  • 任务很简单
  • 这项任务重复了很多次
这是一个相当弱的答案,但如果它开始由比我更有知识的人进行讨论,它将完成它的工作:)

添加:

  • 如果要保证任务的执行(任务队列通常侧重于重试)
  • 如果您希望保持在第三方费率限制内(例如,每秒最多发送10封电子邮件)
  • 如果一个任务是CPU密集型的,并且会使到主API服务器的其他客户端请求陷入困境
这方面的一个非常好的资源是,第1部分和第2部分