我们如何处理Python xmlrpclib连接被拒绝?

前端之家收集整理的这篇文章主要介绍了我们如何处理Python xmlrpclib连接被拒绝?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我不知道我在这里做错了什么,我写了一个RPC客户端试图连接到一个不存在的服务器,我正在尝试处理抛出的异常,但无论我尝试什么我无法弄清楚我应该如何处理这个问题:

def _get_rpc():
    try:
        a = ServerProxy('http://dd:LNXFhcZnYshy5mKyOFfy@127.0.0.1:9001')
        a = a.supervisor
        return a
    except:
        return False

rpc = _get_rpc()
if not rpc:
    print "No RPC"

由于没有服务器运行,我希望输出为“无RPC”,但我得到一个例外:

Traceback (most recent call last):
  File "xmlrpctest.py",line 20,in 
最佳答案
_get_rpc返回对未连接的ServerProxy的supervisor方法的引用.在您处理它的_get_rpc调用中没有发生异常;当你试图评估这个supervisor方法时(在“if not rpc”中),它就会发生.尝试从交互式提示

Python 2.6.5 (r265:79063,Apr 16 2010,13:57:41) 
[GCC 4.4.3] on linux2
Type "help","copyright","credits" or "license" for more information.
>>> import xmlrpclib
>>> xmlrpclib.ServerProxy("http://127.0.0.1");
404 Not Found>
>>> foo = xmlrpclib.ServerProxy("http://127.0.0.1");
>>> dir (foo)
['_ServerProxy__allow_none','_ServerProxy__encoding','_ServerProxy__handler','_ServerProxy__host','_ServerProxy__request','_ServerProxy__transport','_ServerProxy__verbose','__doc__','__getattr__','__init__','__module__','__repr__','__str__']
>>> foo.supervisor
Traceback (most recent call last):
  File "404 Not Found>
>>> bar = foo.supervisor
>>> bar
Traceback (most recent call last):
  File "404 Not Found>

请注意在尝试评估.supervisor方法(ServerProxy(…).supervisor,foo.supervisor或bar)时如何看待异常,而不是在将其分配到别处时(bar = foo.supervisor).

猜你在找的Python相关文章