我正在调用一个使用ajax递归函数的Flask API。大部分时间它工作正常。但是大约一分钟后它就卡住了。
以上所有的api只花了60 - 70毫秒。但是最后一个api花了10.24秒来完成
正因为如此,我的整个相机应用程序看起来口吃.
一开始我以为它是因为代码而卡住的。但是我已经用代码内部的时间差进行了测试,所有API的时间差都保持在60 - 70毫秒。
因此,在击中我的API代码之前,它有时会卡住。我相信这是因为IIS服务器没有及时击中我的 flask API。
这是我的IIS服务器配置
第一节第三节第一节第一节第四节第一节
配置文件-* C:\Windows\System32\inetsrv\config\应用程序主机配置 *
</fastCgi>
...
<application fullPath="D:\aiml_python_code\yolov7-main\venv37\Scripts\python.exe" arguments="D:\aiml_python_code\yolov7-main\venv37\Lib\site-packages\wfastcgi.py" monitorChangesTo="" stderrMode="ReturnStdErrIn500" maxInstances="400" idleTimeout="2592000" activityTimeout="3000" requestTimeout="900000" instanceMaxRequests="200000" signalBeforeTerminateSeconds="0" protocol="NamedPipe" queueLength="100000" flushNamedPipe="false" rapidFailsPerMinute="1000" />
</fastCgi>
编辑-
下面是我的JavaScript递归函数
function api_Call() {
cameraSensor.width = cameraView.videoWidth;
cameraSensor.height = cameraView.videoHeight;
cameraSensor.getContext("2d").drawImage(cameraView, 0, 0);
let c = document.getElementById("cam_frame");
c.width = cameraView.videoWidth;
c.height = cameraView.videoHeight;
$.ajax({
type: "POST",
headers: { 'Content-Type': 'application/json' },
dataType: "json",
<!-- timeout: 1000, -->
data: JSON.stringify({'image':cameraSensor.toDataURL("image/webp")}),
url: "/flaskapi3/imagepred",
success: function (response) {
data = response['data'];
c.src = "data:image/png;base64, "+data;
api_Call();
},
error: function (err) {
setTimeout(function () {
api_Call();
}, 1000);
}
});
};
1条答案
按热度按时间ddarikpa1#
在IIS FastAPI应用程序中找到配置。MaxRequests默认设置为200。我们必须将其更改为最大值
1.转到FastAPI应用程序
1.选择您的应用程序并将
Instance MaxRequests
从200更改为最大值。