python - 当服务器执行耗时的操作时是否应该保留 HTTP 请求?或者放弃这个请求?

标签 python http request

假设某个操作可能需要在服务器上执行 2 到 10 分钟,例如更新索引,这非常耗时。

您会在保留请求的同时执行该操作吗?即在操作完成之前不发送 HTTP 响应?如果客户端/浏览器丢弃请求,是否仍继续操作?

有什么替代方案吗?启动操作,并响应“长时间操作启动”?如果操作中途失败怎么办,客户端怎么知道?维护操作的服务器端“状态”?

谢谢

最佳答案

您还可以使用分块响应。首先,推送带有一些代码的 block ,这些代码将显示“请稍候”屏幕,刷新响应并开始工作。然后,您可以通过定期进度更新推送和刷新 block ,或者仅在最后推送一个带有“已完成”信息的 block 。显然,您可以使用 JavaScript 来获得漂亮的 UI。

(如果您使用 WSGI,则上述内容不适用,因为第一个 WSGI 规范的编写方式会阻止使用未知长度的响应,因此不可能使用分块响应。)

关于python - 当服务器执行耗时的操作时是否应该保留 HTTP 请求?或者放弃这个请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7587939/

相关文章:

python - 我怎样才能用pandas以更Pythonic的方式解决这个问题?

python - 如何从 python 中的不同文件修补 requests.get

c# - 表示数字序列的算法

java - 如何恢复中断的下载 - 第 2 部分

android - AndroidHttpClient 中的 HttpRequestInterceptor。我糊涂了!

c - gethostbyname,连接到整个互联网?

python - 如何在 Windows 7 中使用 Python 廉价地创建一个非常大的文件?

javascript - 为所有被拒绝的 promise 调用相同的函数

javascript - 使用 fetch 和 chrome 的多个请求一次只能处理 6 个文件,其他请求将被停止

ios - Swift 中的 Soap 请求错误代码 500