当请求需要超过 10 分钟才能响应时,套接字会挂断

当请求需要超过 10 分钟才能响应时,套接字会挂断

我们正在从 node js 应用程序(托管在 Google 应用引擎中)向 python(在 cloud RUN 中运行)发送 axios 请求,python(flask)应用程序在某些情况下需要更多时间来响应。当它(python)需要超过 10 分钟才能发回响应时,响应不会出现并且应用程序挂断。Python 在所有情况下都使用状态代码 200 发送响应。

如果请求需要更长时间(超过 10 分钟)才能响应,我总是会收到“before axios”的日志语句,但如果请求需要更长时间(超过 10 分钟)才能响应,则不会收到另一个日志。

我们甚至尝试通过请求库(而不是 axios)发送请求,以及使用

   axios(config)
          .then()
.catch()

以下是代码片段;

var try_data = {
                "name" : "abc",
"age": 67
            }

 var config = {
                method: 'post',
                url: `https:/python/results`,
                headers: {
                    'Content-Type': 'application/json'
                },
                data: try_data,
                timeout: 3600000
            };
            console.log("just before axios")

            var optimised_result = await axios(config)
console.log(optimised_result);
console.log("after axios")

答案1

请求超时设置指定部署到 Cloud Run 的服务必须在多长时间内返回响应。如果未在指定时间内返回响应,则请求结束并返回错误 504。

超时时间默认设置为 5 分钟,最多可延长至 60 分钟。

您可以阅读有关 Cloud Run 请求超时的更多信息这里

除了更改 Cloud Run 请求超时之外,您还应检查语言框架,看看它是否有自己的请求超时设置,您也必须更新该设置。Python 本身或 Flask 可能对超时有限制,这可能会影响套接字的关闭。

相关内容