Tôi có mã máy chủ xmlrpc đơn giản:Cách xem traceback trên máy chủ xmlrpc, không phải máy khách?
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()
Phiên mẫu.
Chủ đầu tư:
>>> 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 -
Câu hỏi đặt ra là nếu tôi có thể nhận được dấu vết này lại cũng trên máy chủ. Tôi cần phải biết nếu có vấn đề gì xảy ra với truy vấn xử lý. Tôi không sử dụng ứng dụng khách được viết bằng Python nên rất khó để tôi có được traceback như trên.
Câu hỏi của bạn là thực sự khó hiểu. Bạn nói rằng bạn không sử dụng một khách hàng trong python, nhưng khách hàng của bạn là mã python. – Falmarri
Có, nhưng đó chỉ là ví dụ. Là khách hàng tôi đang sử dụng một số dll mà dựa trên thư viện xmlrpc-c. Và tôi thực sự không muốn thay đổi mã của dll này ... – Adam