XML-RPC Client vorzeitig beenden

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
antaeus
User
Beiträge: 48
Registriert: Dienstag 19. September 2006, 10:10

Freitag 9. März 2007, 14:57

Hallo zusammen!

Ich rufe aus einem Programm Methoden remote mit XML RPC auf. Manchmal kann es passieren, dass die Antwort des XML RPC Servers sehr lange auf sich warten lässt. Was muss ich tun, um den wartenden XML RPC Client vorzeitig zu beenden?

Ich suche leider schon eine kleine Ewigkeit im Netz herum, finde aber dazu keine Antwort.

Code: Alles auswählen

from xmlrpclib import ServerProxy, Error
from threading import Thread
from time import sleep


class XMLRPC_Thread(Thread):

    def __init__(self):
        Thread.__init__(self)
        hostname="192.168.0.31"
        port = 33333
        host=(hostname, port)
        uri = "http://"+host[0]+":"+str(host[1])
    
        self.test_node = ServerProxy(uri)
        
    def run(self):
        try:            
            x = self.test_node.get_stuck() # Aufruf blockiert beliebig lang
        except Error, v:
            print "Error", v

    def stop(self):
        # wie kann man den Client stoppen??
        pass

x = XMLRPC_Thread()
x.start() # starte XMLRPC Thread

sleep(10) # warte 10 Sekunden

x.stop() #stoppe XMLRPC Thread


Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Freitag 9. März 2007, 16:16

Nicht gerade "simple", aber schonmal umgesetzt worden: --Link--

(der Code ist weder von mir, noch selber getestet, sondern lediglich ergoogelt und muss stark auf das eigene Ziel hin wohl angepasst werden !!!)

Gruß,
>>Masaru<<
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 9. März 2007, 18:18

Hi antaeus!

Man kann den Socket-Timeout global einstellen. Das ist für einzelne Prozesse eine einfache Sache, aber wenn du mit Threads arbeitest, weiß ich nicht, wie sich das auf das restliche Programm auswirkt. Man müsste es mal ausprobieren...

Siehe: http://www.python-forum.de/post-33277.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
antaeus
User
Beiträge: 48
Registriert: Dienstag 19. September 2006, 10:10

Donnerstag 15. März 2007, 09:52

gerold, du bist mein ganz persönlicher Held des Tages!

Ich habe zwar das XML-Problem noch nicht weiter verfolgt (kommt später), konnte aber mit dem "setdefaulttimeout" ein anderes Problem lösen! Vielen Dank!
Antworten