QThreads und XMLRPC-Client
-
13-12-2019 - |
Frage
Ich versuche, den XMLRPC-Client von vielen QThreads zu verwenden.Um sicherzustellen, dass nur ein Thread den XMLRPC-Client verwendet, den ich mit qmutex gesperrt habe.Mein Code:
generasacodicetagpre.aber es funktioniert nicht und ich bin nicht sicher, warum.Hier wird ausgegeben:
generasacodicetagpre.Wenn nur ein Thread verwendet wird, funktioniert fein:
generasacodicetagpre.Wenn Sie zwei verschiedene Instanzen von MM verwenden, funktioniert auch fein:
generasacodicetagpre.Lösung
Es gab ein paar Probleme, die ich mit dem Code sah, aber hauptsächlich derjenige, in dem ich mich sofort befriedigte, war, dass Sie den Kunden starten, bevor der Server fertig war. Wenn ich den Server zuerst instanziiert habe, dann ist der Client aufgehört, Verbindungsfehler zu erhalten.
Ich habe auch Ihre Spinning während der Schleife entfernt und stattdessen die PYQT-Ereignisschleife gestartet. Sie haben auch Ihre MM-Instanz wirklich an Ihre Ask-Klasse bestanden (nicht, dass es für dieses Beispiel für dieses Beispiel so wichtig ist, seit Sie dieselbe Instanz verwenden).
Wie auch immer, hier ist meine Version, die zu funktionieren ist:
generasacodicetagpre.update
Nachdem ich ein bisschen mehr eingeschaltet habe, wurde mir klar, dass es sich um einen Fehler in Python 2.7 und XMLRPC, wo sie sich ändern, wie er Verbindungen erstellt. http://bugs.python.org/issue6907
Seltsam, dieser Code stürzt nicht auf Python 2.6 / 2.7 auf OSX oder auf Python 2.6 unter Linux nicht zusammen. Aber es stürzt für mich mit Python 2.7 unter Linux ab.
Wenn ich den Verriegelungsmechanismus außerhalb der MM-Instanz bewegte, schien es zu beginnen, unter 2.7 auf Linux zu arbeiten:
generasacodicetagpre.