devo semplice codice server xmlrpc:Come vedere traceback sul server xmlrpc, non sul client?
from SimpleXMLRPCServer import SimpleXMLRPCServer
port = 9999
def func():
print 'Hi!'
print x # error!
print 'Bye!'
if __name__ == '__main__':
server = SimpleXMLRPCServer(("localhost", port))
print "Listening on port %s..." % port
server.register_function(func)
server.serve_forever()
esempio di sessione.
Cliente:
>>> import xmlrpclib
>>> p = xmlrpclib.ServerProxy('http://localhost:9999')
>>> p.func()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python26\lib\xmlrpclib.py", line 1199, in __call__
return self.__send(self.__name, args)
File "C:\Python26\lib\xmlrpclib.py", line 1489, in __request
verbose=self.__verbose
File "C:\Python26\lib\xmlrpclib.py", line 1253, in request
return self._parse_response(h.getfile(), sock)
File "C:\Python26\lib\xmlrpclib.py", line 1392, in _parse_response
return u.close()
File "C:\Python26\lib\xmlrpclib.py", line 838, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: "<type 'exceptions.NameError'>:global name 'x' is not defined">
>>>
Server:
Listening on port 9999...
Hi!
localhost - - [11/Jan/2011 16:17:09] "POST /RPC2 HTTP/1.0" 200 -
La domanda è se posso ottenere questo tracciato torna anche sul server. Devo sapere se qualcosa è andato storto con l'elaborazione della query. Non sto usando client scritto in Python quindi è difficile per me ottenere il traceback come sopra.
La tua domanda è davvero confusa. Dici che non stai usando un client in Python, ma il tuo client è un codice Python. – Falmarri
Sì, ma questo è solo un esempio. Come client sto usando qualche DLL che si basa sulla libreria xmlrpc-c. E io davvero non voglio cambiare il codice di questa DLL ... – Adam