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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top