我们正在从 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 可能对超时有限制,这可能会影响套接字的关闭。