[英]QNetworkAccessManager Process Finished With Exit Code 139 (Interrupted by signal 11: SIGSEGV)
[英]How to find what request causes QNetworkAccessManager instance to emit finished signal?
我的班級中有一個QNetworkAccessManager實例,我想將此實例用於多個請求,我的問題是如何找出哪個請求導致 QNetworkAccessManager 實例發出完成的信號,以便我能夠使用響應數據正確的地方,例如:
def __init__(self, parent=None):
super().__init__(parent=parent)
RequestManager._manager = QNetworkAccessManager(parent)
我的班級中有 _manager,它連接到一個插槽,如下所示:
self._manager.finished[QNetworkReply].connect(self.getreply)
getreply 是:
@Slot(QNetworkReply)
def getreply(self, reply):
status_code = reply.attribute(
QNetworkRequest.HttpStatusCodeAttribute) or 0
if 200 <= status_code < 300:
if reply.error() == QNetworkReply.NoError:
l_data = json.loads(
reply.readAll().data().decode())["data"]["items"]
self.removeRows(0, 0, None)
self.insertRows(
self.rowCount(),
len(l_data) - 1,
QtCore.QModelIndex(),
l_data
)
self.dataFetch.emit(True)
else:
pass
所以,當我同時提出兩個請求時,如下所示:
self._manager.get(
QNetworkRequest(
QUrl(
server_addr + "products/"
)
)
)
self._manager.get(
QNetworkRequest(
QUrl(
server_addr + "users/"
)
)
)
那么我怎么知道上面的哪個請求發出了完成的信號呢? 謝謝
我的方法是錯誤的,我可以使用來自_manager.post或_manager.get的返回值,即QNetworkReply ,QNetworkReply 有一個完成的信號,您可以將您的特定插槽連接到回復值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.