【发布时间】:2013-06-11 06:53:56
【问题描述】:
我有一个 python qt 程序,它从服务器下载许多 url。大多数网址都是小图像(图标)并且是独一无二的。
由于某些奇怪的原因,请求完成后 python/qt 仍然有一个活动的 http 连接到服务器。在我的例子中,这意味着很多 http 连接。
QT 文档指出 QNetworkAccessManager -“6 个请求针对一个主机/端口组合并行执行。”这么多、几百个http连接怎么能保持打开状态?
几分钟后连接关闭,但如果应用程序下载太多太快,应用程序会因“(process:3265): GLib-ERROR **: Creating pipelines for GWakeup: Too many open files”而死
在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
【问题讨论】:
标签: python qt http networking pyqt4