我们正在 Django 中创建一个 Web 服务(RESTful API)。我们的 API 将包装我们自己的内部数据以及我们的 Web 服务层将访问的其他一些 API。
我们使用的其中一个 API 有一些长时间运行的调用,它们在大约一分钟内不返回 HTTP 响应。API 有一个单独的 API 调用来获取当前操作的状态,但这意味着用户必须启动长时间运行的操作,然后有一个单独的进程轮询状态。我们不希望我们的 API 以这种方式工作,我们希望初始请求只返回一个表示它正在进行的响应。
所以我们想要做的是当我们得到一个长时间运行的请求时,我们异步地向 API 发起一个我们自己的 HTTP 请求,然后返回一个响应。然后每次我们得到一个状态调查,我们只是通过它并用我们得到的响应来响应。当我们收到操作完成的回调时,下次我们收到状态轮询时,我们将响应操作完成并返回数据。这意味着我们需要处理传入状态请求的处理程序,以检查正在进行的长时间运行的请求列表以响应状态。
这似乎是解决这个问题的合理方法吗?我们应该研究哪些 python 库来使这种事情变得更容易?我们不确定是使用像 eventlet 或 twisted 这样的低级别的东西,还是像芹菜这样重量更重的东西。芹菜似乎是这类东西的正常推荐,但我不能 100% 确定它的位置。
谢谢,斯宾塞