python中的xmlrpc客户端调用没有回来

Jac*_* Ha 2 python client xml-rpc

使用Python 2.6.4,windows

使用以下脚本,我想测试某个xmlrpc服务器.我调用一个不存在的函数,希望有一个错误的回溯.相反,该功能不会返回.可能是什么原因?

import xmlrpclib
s = xmlrpclib.Server("http://127.0.0.1:80", verbose=True)
s.functioncall()
Run Code Online (Sandbox Code Playgroud)

输出是:

send: 'POST /RPC2 HTTP/1.0\r\nHost: 127.0.0.1:80\r\nUser-Agent: xmlrpclib.py/1.0
.1 (by www.pythonware.com)\r\nContent-Type: text/xml\r\nContent-Length: 106\r\n\
r\n'
send: "<?xml version='1.0'?>\n<methodCall>\n<methodName>functioncall</methodName
>\n<params>\n</params>\n</methodCall>\n"
reply: 'HTTP/1.1 200 OK\r\n'
header: Content-Type: text/xml
header: Cache-Control: no-cache
header: Content-Length: 376
header: Date: Tue, 30 Mar 2010 13:27:21 GMT
body: '<?xml version="1.0"?>\r\n<methodResponse>\r\n<fault>\r\n<value>\r\n<struc
t>\r\n<member>\r\n<name>faultCode</name>\r\n<value><i4>1</i4></value>\r\n</membe
r>\r\n<member>\r\n<name>faultString</name>\r\n<value><string>PVSS00ctrl   (2), 2
010.03.30 15:27:21.395, CTRL, SEVERE,     72, Function not defined, functioncall
, , \n</string></value>\r\n</member>\r\n</struct>\r\n</value>\r\n</fault>\r\n</m
ethodResponse>\r\n'
Run Code Online (Sandbox Code Playgroud)

(这里程序挂起,直到我杀死服务器才返回)

编辑:服务器使用自己的xmlrpc库以c ++编写

编辑:发现一个看起来像问题http://bugs.python.org/issue1727418的问题

Ale*_*lli 5

正如您所注意到的,这是服务器中的一个错误(客户端声称理解1.0并且服务器忽略了它并且无论如何都以1.1响应,所以不关闭套接字).Python为2.7和3.2中的这类错误服务器提供了一种解决方法,请参阅此问题,但该解决方法不在2.6.4中.不幸的是,从2.6.5的NEWS.txt看起来我们还没有将它向后移植到2.6.5.2.7中的变通方法的补丁就在这里,也许你可以尝试将它自己应用到2.6.5,如果它只是不可能修复错误的服务器......?