python - 连接中断:ConnectionResetError(104, 'Connection reset by peer') 作为来自 python 服务器的响应,同时通过 Ajax 调用请求
问题描述
面临一个问题:(“连接中断:ConnectionResetError(104,'对等连接重置')”,ConnectionResetError(104,'对等连接重置'))
环境:PCF(OS:Linux, Instance with 3GB RAM and 8 Core of CPU)
用例:需要将较大的文本文件转换为 Dataframe(20k,204) 并需要做一些操作,最后保存为 excel。
我在 200 个文件上尝试了大约 20,000 行文本,试图将所有 200 个文本文件转换为 excel。
代码执行的预计到达时间是:5 分钟。
在 Flask Server 上运行的 Python 代码。
通过 $ajax() 异步调用此脚本。
浏览器:铬
我已经完成了多处理使用,
- 池.map():
pool = Pool(processes=os.cpu_count()//2,maxtasksperchild=1) s=pool.map(MainFunction, MainListFiles) pool.close() pool.join() del pool pool=None e=str(time.time()-st) s.append(e)
使用 jquery Ajax 调用 python 脚本:
$.ajax({
type: 'POST',
url: PythonUrl,
data: $.param({path:'PythonCode',pythonfile:filename,data:rand}),
beforeSend: function()
{
$('#loader').css('display','block');
},
success: function(data)
{
console.log(data)
$('#loader').css('display','none');
modal.style.display = "block";
document.getElementById('p1').innerHTML = data;
},
error: function(x, t, m) {
if(t==="timeout") {
alert("got timeout");
} else {
alert(t);
}
}
});
我研究了ajax在promise解决之前不会关闭连接,对吗?
那么什么可能导致这个错误呢?对等方重置连接,究竟是什么意思?
我看到一些线程有同样的错误,但他们错过了 pool.join() 所以 mp 在一些工作人员正在处理时试图关闭池。但我已经正确地加入了池。
注意:但有一件事我在此异常之后再次运行相同的脚本,它成功运行并给出了正确的响应。
所以错误是由于:
- ajax是否关闭连接,因为它很长时间没有得到python的响应。
- 浏览器是意外关闭连接还是出于某种原因?
- 这是尝试关闭池时的任何多处理异常吗(因为我恰好在最后一刻收到此错误,其中最后 3 个文件正在处理 200 个文件中)
- 问题通常是由于客户端或服务器端出现问题而发生的。它说连接重置。所以服务器重置连接:FLASK?JavaScript 吗?多处理?浏览器?
这真的让我害怕!因此,如果不理解这一点,就无法将此代码提交到生产环境中。因此,如果有人可以就此向我提出建议,那就太好了。
解决方案
推荐阅读
- php - 使用列表函数的奇怪斐波那契结果
- python - python 套接字编程:制作 pim-join-prune 数据包
- linux - Perf 将一些直接跳转指令报告为内存访问指令
- django - 如何使用我自己的应用程序的内置管理登录面板登录用户?
- cakephp - Font Awesome 字形未显示为表单助手按钮标题
- php - 如何在 PHP 中永久类型转换类属性?
- node.js - 调用post方法时,密码对应时进入if语句,但我在if语句中的res被忽略,为什么?
- javascript - 下午 2 点启动了我的机器人,但机器人在 discord 上不在线
- jquery - 如何使用默认文本自动填充与另一字段相同的字段?
- qt - 在 QML 地图中动态更改 osm 插件的自定义主机 URL