Basit xmlrpc sunucu kodum var:İstemcide değil, xmlrpc sunucuda traceback nasıl görülebilir?
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()
Örnek oturum.
>>> 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">
>>>
Sunucu:
Listening on port 9999...
Hi!
localhost - - [11/Jan/2011 16:17:09] "POST /RPC2 HTTP/1.0" 200 -
Soru şu ki bu izi sunucuda da geri alabilir miyim. Sorgulama işleminde bir şeyler ters giderse, bilmem gerek. Python'da yazılmış istemciyi kullanmıyorum, bu yüzden yukarıdaki gibi geri çekilmem zor.
Sorunuz gerçekten kafa karıştırıcı. Python'da bir istemci kullanmadığınızı, ancak müşterinizin python kod olduğunu söylüyorsunuz. – Falmarri
Evet, ama bu sadece bir örnektir. Istemci olarak xmlrpc-c kitaplığı üzerinde bazı dll kullanıyorum. Ve ben gerçekten bu dll kodunu değiştirmek istemiyorum ... – Adam