我有一个 python qt 程序,它从服务器下载许多 url。大多数网址都是小图像(图标)并且是独一无二的。
由于某些奇怪的原因,请求完成后 python/qt 仍然与服务器有一个活动的 http 连接。在我的情况下,这意味着许多 http 连接。
QT 文档指出 QNetworkAccessManager - “6 个请求针对一个主机/端口组合并行执行”。这么多、数百个 http 连接如何保持打开状态?
几分钟后,连接关闭,但如果应用程序下载太多太快,应用程序会因“(进程:3265):GLib-ERROR **:为GWakeup创建管道:打开的文件太多”而死
在finished() 信号中,我调用reply.deleteLater() 然后确保我的应用程序没有引用回复。
首先我可以捕捉到“打开的文件太多”错误并正确处理它吗?
其次,我可以防止这么多 http 连接在关闭之前保持打开状态吗?
---- 片段 ----
image_request = Qt.QNetworkRequest()
image_request.setUrl(Qt.QUrl(url))
self.image_reply = self.manager.get(image_request)
self.image_reply.finished.connect(self.image_available)
image_available 是
def image_available(self):
if self.image_reply.error() == Qt.QNetworkReply.NoError:
data = self.image_reply.readAll()
img = Qt.QImage()
img.loadFromData(data)
self.lbl_icon.setPixmap(Qt.QPixmap(img))
self.image_reply.deleteLater()
self.image_reply = None