Django - 外部API请求是否应始终通过任务处理程序(例如Celery)进行?

时间:2017-03-07 20:32:33

标签: django celery middleware

我有一个Django应用程序,我在其中创建了一个自定义中间件。

它的工作原理如下:

  1. 中间件拦截每个请求中的令牌(标识用户),并使用该令牌向外部API发出请求。
  2. 外部API返回发出原始请求的用户拥有的权限。
  3. 中间件完成,用户根据其权限获取返回的数据
  4. 这是我的问题: 因为我的应用程序必须等待API请求在它处理请求之前返回,所以使用像celery这样的任务队列是否仍然有意义?在等待响应时,它是否仍然需要阻止线程?

1 个答案:

答案 0 :(得分:3)

不,在这里使用Celery根本没有任何意义。那是可以纯粹在进程外的任务。一个很好的例子是发送确认电子邮件;发送到浏览器的响应不必等待发送电子邮件,因为它不依赖于它。

在您的情况下,响应显式取决于API的值。使用Celery没有任何好处,它会使整个过程变得比它需要的复杂得多。