xmlrpclib request funzt mit Python2_6 nicht mehr

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
10EuroSchein
User
Beiträge: 5
Registriert: Donnerstag 30. April 2009, 16:23

Tach zusammen,
Ne Weile nicht mehr hier gewesen.
Folgende Sachlage....
Ich hatte mir nen RPC Server gebastelt auf ner Linux Kiste gebastelt.
Und dazu um den Server zu testen auch mit Python nen Client.
Der dann eben die Funktionen des Servers aufruft.
Lief auch alles top.
Nun mein Problem.
Ich musste die Linux Kiste neu machen, soll heißen OpenSuse11_2 Neuinstall.
Soooo...nun ist aber auf dem Server (der LinuxKiste mit dem OpenSuse) Python 2.6 vorinstalliert.
Vorher hatte ich den Server in 2.5 programmiert, ebenso den Client, der auf dem Windows Server läuft.
Nun das Problem:
Der Request vom Client zum Server klappt. Also er kommt an.
Es startet die verarbeitung des Requests auf dem Server.
Bis zu dem Punkt, wo ich, zur Kontrolle, ob der Client verbunden ist, auf dem Server nen neuen Thread starte.
In dem thread wird seinerseits ein Client gestartet, also in etwa so:

Code: Alles auswählen

s=xmlrpclib.ServerProxy(addr,TimeOut)

geb ich mir mit print s des ganze aus, steht auch fein die Instanz da...also

Code: Alles auswählen

<ServerProxy for....>

Will ich aber jetzt eine Funktion dort aufrufen also mit

Code: Alles auswählen

$resp=s.test(1)
meinetwegen


kommt folgender Fehler:

Code: Alles auswählen

Tracback bla bla
      meine Datei...
        $resp=s.test(1)
     File: usr/lib/python2.6/xmlrpclib.py line 1199 in __call
        return.self.__send(self.__name, args)
     File: usr/lib/python2.6/xmlrpclib.py line 1485 in __request
        response=self.__transport.request(
Attribute Error: 'int' object has no attribute 'request'

Ich verstehe die Fehlermeldung schon, und ich denke ich weiß auch was falsch ist, nämlich:
Dieses

Code: Alles auswählen

__transport
Tierchen sollte eigentlich nen Request Object sein, ist aber aus irgendeinem, mir unerfindlichen Grund ein int Object. Und somit geht der ganze Request baden.....
VORHER, also als ich noch mit pyton 2.5 gearbeitet hatte, lief des ganze.
Meine Frage also nun,
hat einer von euch ne Idee, ob sich von 2.5 auf 2.6 beim aufrufen des requests was geändert hat?
Und wie muss des dann richtig heißen?!
Ich hab auch mal zum testen noch ein kleines Skript gebastelt, was von der 2.6er Seite aus nen Request zum Windows 2.5er Python RPC Server senden soll, und des klappt auch nich, mit genau der Fehlermeldung.
Der Request kommt gar nicht erst beim Server an.
Es muss also an einer Änderung im Zuge der Versions-Änderung liegen.....
Aber ich bin mit meinem Latein gerade am Ende....

FAZIT: NEVER change a running system..;o)

Für Antworten danke ich schon mal im Voraus....
Zuletzt geändert von 10EuroSchein am Donnerstag 25. Februar 2010, 17:42, insgesamt 2-mal geändert.
Nichts wissen ist besser als gar nichts wissen, ...
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Ich finde deinen Post extrem schwer zu lesen, weshalb ich ihn auch nur überflogen habe, bitte benutze in Zukunft Code-Tags. Außerdem fehlt die entscheide Information: Was ist `TimeOut` bei dir? Wenn es eine Zahl ist, dann ist das falsch, allerdings konnte das dann auch unmöglich vorher funktioniert haben.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
10EuroSchein
User
Beiträge: 5
Registriert: Donnerstag 30. April 2009, 16:23

Sorry für die saumäßige Form.................


Was des TimeOut angeht:
Doch es ist ein IntegerWert.
Was SOLLTE es denn sein?
Nichts wissen ist besser als gar nichts wissen, ...
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

10EuroSchein hat geschrieben:Was des TimeOut angeht:
Doch es ist ein IntegerWert.
Was SOLLTE es denn sein?
Laut Dokumentation zu xmlrpclib ist der zweite Parameter eine "transport factory instance".
10EuroSchein
User
Beiträge: 5
Registriert: Donnerstag 30. April 2009, 16:23

Leuts, lange Rede kurzer Sinn,
IHR hattet Recht...den 2. Para als TimeOut setzen ist quatsch.
ABER mir ist jetzt auch wieder eingefallen WIESO das vorher gefunzt hatte.
Ich hatte mir die Funktion in xmlrpclib überschrieben, damit man als 2. Para den Timeout mit angeben kann.
Aber im Zuge der Neuinstallation hat es mir natürlich auch wieder die "originale" xmlrpclib drauf gemacht.
Aber OHNE euch wär ich da nie drauf gekomm..;o)
Also Danke nochmal...
So dele....
ADMIN-> CLOSE that THREAD
Nichts wissen ist besser als gar nichts wissen, ...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Das zeigt wieder, warum man sowas eben nicht machen sollte.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten