【问题标题】:Django - Should external API requests always be made through a task handler (e.g. Celery)?Django - 是否应该始终通过任务处理程序(例如 Celery)发出外部 API 请求?
【发布时间】:2017-03-07 20:32:33
【问题描述】:

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

它的工作原理如下:

  1. 中间件在每个请求中截获一个令牌(用于标识用户),并使用该令牌向外部 API 发出请求。
  2. 外部 API 返回发出原始请求的用户所拥有的权限。
  3. 中间件完成,用户根据权限获取返回数据

这是我的问题: 因为我的应用必须等待 API 请求返回才能处理请求,所以使用 celery 之类的任务队列仍然有意义吗?在我等待响应时,它是否仍然需要阻塞线程?

【问题讨论】:

    标签: django celery middleware


    【解决方案1】:

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

    在您的情况下,响应明确取决于 API 中的值。使用 Celery 不会有任何收获,而且会使整个过程变得比需要的复杂得多。

    【讨论】:

      猜你喜欢
      • 2019-11-23
      • 2015-06-24
      • 2017-12-25
      • 2017-02-11
      • 2012-03-19
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多