繁体   English   中英

套接字错误处理在python 2.5中是否与2.7不同?

[英]Is socket error handling different in python 2.5 than 2.7?

下面是一个代码片段,其中包含我正在运行的python脚本化Windows服务的错误跟踪。 它似乎在Windows XP上的python 2.7中工作正常,但我使用的生产机器在Windows Server 2003上运行python 2.5。我遇到的主要错误是'error' object has no attribute 'errno'我做的是从根本上做的事情错误的python 2.5适用于2.7?

代码剪辑:

try:
     if s == None:
          s = self.connect()
     char = s.recv(1)
     line += char

except socket.timeout:
    if s != None:
        s.close()
    s = None
    continue

except socket.error, socket_error:
    servicemanager.LogErrorMsg(traceback.format_exc())

    if socket_error.errno == errno.ECONNREFUSED:
        if s != None:
            s.close()
        time.sleep(60)

        s =None                    
        continue

    else:
        if s != None:
            s.close()
        os._exit(-1)

else:
    pass

错误跟踪剪辑:

if socket_error.errno == errno.ECONNREFUSED:
AttributeError: 'error' object has no attribute 'errno' 
%2: %3

正如这里解释的 ,在python 2.6中:

在2.6版中更改:socket.error现在是IOError的子类。

IOError的子类有一个errno成员。

如果你想在python <2.6中获得与你的错误相关的errno,(并且假设这里描述的方式对于引发socket.error是有效的)你必须从异常的args属性中获取它:

except socket.error, socket_error:
    if socket_error.args[0] == errno.ECONNREFUSED:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM