Python QT QNetworkRequest以“退出”;(进程:3265):GLib错误**:为GWakeup创建管道:打开的文件太多”;

Python QT QNetworkRequest以“退出”;(进程:3265):GLib错误**:为GWakeup创建管道:打开的文件太多”;,python,qt,http,networking,pyqt4,Python,Qt,Http,Networking,Pyqt4,我有一个pythonqt程序,可以从服务器下载许多url。大多数URL都是小图像(图标),并且是唯一的 由于某种奇怪的原因,在请求完成之后,python/qt仍然有一个到服务器的活动http连接。在我的例子中,这意味着许多http连接 QT文档说明QNetworkAccessManager——“6个请求对于一个主机/端口组合并行执行。”那么多、数百个http连接如何保持打开状态 几分钟后,连接关闭,但如果应用程序下载太多太快,应用程序将因“(进程:3265):GLib错误**:为GWakeup创

我有一个pythonqt程序,可以从服务器下载许多url。大多数URL都是小图像(图标),并且是唯一的

由于某种奇怪的原因,在请求完成之后,python/qt仍然有一个到服务器的活动http连接。在我的例子中,这意味着许多http连接

QT文档说明QNetworkAccessManager——“6个请求对于一个主机/端口组合并行执行。”那么多、数百个http连接如何保持打开状态

几分钟后,连接关闭,但如果应用程序下载太多太快,应用程序将因“(进程:3265):GLib错误**:为GWakeup创建管道:打开的文件太多”而死亡

在finished()信号中,我调用reply.deleteLater(),然后确保我的应用程序没有对reply的引用

首先,我能捕捉到“打开的文件太多”错误并正确处理它吗

第二,我可以防止这么多的http连接在关闭之前保持打开状态吗

----片段----

图像_可用

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

您的条件
self.image\u reply.error()==Qt.QNetworkReply.NoError
是否始终为真?如果为false,则不会调用
deleteLater

尝试设置“连接:关闭”标题:

image_request.setRawHeader("Connection", "close");

另外,请尝试手动调用self.image\u reply.close()。

您的条件是
self.image\u reply.error()==Qt.QNetworkReply.NoError
始终为真吗?如果为false,则不会调用
deleteLater

尝试设置“连接:关闭”标题:

image_request.setRawHeader("Connection", "close");

另外,请尝试手动调用self.image\u reply.close()。

经过大量调试,我发现了这个问题

事实证明self.manager被覆盖了很多次(意外地,它应该被创建并分配一次)

self.manager = Qt.QNetworkAccessManager(self)
发生了不止一次,而且不应该发生


现在确实有一个QNetworkAccessManager,只有6个http连接+6个https连接,这正是我想要的。

经过大量调试,我发现了这个问题

事实证明self.manager被覆盖了很多次(意外地,它应该被创建并分配一次)

self.manager = Qt.QNetworkAccessManager(self)
发生了不止一次,而且不应该发生


现在确实有一个QNetworkAccessManager,只有6个http连接+6个https连接,这正是我想要的。

我目前没有收到任何错误(直到出现太多打开的文件)。错误记录在manager.finished信号中。我曾尝试将Keep Alive设置为false,但没有任何区别。我将尝试连接:close headerself.image\u reply.close()没有帮助可能这是预期的,因为文档说“网络资源在完成之前不会被丢弃”我目前没有收到任何错误(直到出现太多打开的文件)。错误记录在manager.finished信号中。我曾尝试将Keep Alive设置为false,但没有任何区别。我将尝试连接:close headerself.image\u reply.close()没有帮助可能这是预期的,因为文档说“网络资源在完成之前不会被丢弃”