gpt4 book ai didi

python - 在 python xmlrpc 代理上使用 getattr

转载 作者:行者123 更新时间:2023-11-28 23:01:36 26 4
gpt4 key购买 nike

This answer暗示我可以在 xmlrpc 服务器代理上使用 getattr。但是,就我而言,这似乎不起作用。我是否遗漏了服务器定义中的一个步骤?

我的服务器代码是这样的:

import SimpleXMLRPCServer
class Listener(object):
def ping(self):
return "ping"
s = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost",8910), allow_none=True)
l = Listener()
s.register_instance(l)
s.register_introspection_functions()
s.serve_forever()

当我以交互方式使用它时,我可以调用 ping 函数,但我不能在代理上使用 getattr:

$ python -i
ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:22:14) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import xmlrpclib
>>> proxy = xmlrpclib.ServerProxy("http://localhost:8910", allow_none=True)
>>> proxy.ping()
'ping'
>>> getattr(proxy, "ping")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\Python27\lib\xmlrpclib.py", line 1224, in __call__
return self.__send(self.__name, args)
File "c:\Python27\lib\xmlrpclib.py", line 1575, in __request
verbose=self.__verbose
File "c:\Python27\lib\xmlrpclib.py", line 1264, in request
return self.single_request(host, handler, request_body, verbose)
File "c:\Python27\lib\xmlrpclib.py", line 1297, in single_request
return self.parse_response(response)
File "c:\Python27\lib\xmlrpclib.py", line 1473, in parse_response
return u.close()
File "c:\Python27\lib\xmlrpclib.py", line 793, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: '<type \'exceptions.Exception\'>:method "ping.__repr__" is not supported'>
>>>

最佳答案

它在交互式控制台中不起作用。控制台想要显示函数的 repr 但尝试调用 ping.__repr__ 失败。

分配给一个变量有效:

>>> f = getattr(proxy, 'ping')
>>> f()
'ping'

关于python - 在 python xmlrpc 代理上使用 getattr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10899229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com