python尝试socket超时,再试一次

时间:2013-07-11 17:25:20

标签: python sockets

当我得到套接字超时异常时,最聪明的方法是再次尝试

尝试:           开瓶器= urllib.FancyURLopener(代理人)           RES = opener.open(REQ)

除了Exception详情:           self.writeLog(详情)

让上面的代码我从套接字中得到一个超时错误,我想更改代理并再次尝试我该怎么做(我的函数不能做递归)我应该使用像错误不是套接字的东西超时继续这样做?或者应该做一段时间True并在except部分更改代理?

最聪明的方式是什么?

2 个答案:

答案 0 :(得分:2)

你的意思是这样吗?

for proxy in proxy_list:
    try:
        open_url(proxy, timeout=MY_TIMEOUT_VALUE)
        break
    except ASocketTimeoutError:
        pass

其中open_url()是您正在使用的任何代码,可能导致套接字超时,ASocketTimeoutError是套接字超时异常的名称。

答案 1 :(得分:0)

编写一个处理连接的单独函数,如果连接失败,则此函数会抛出异常。然后在主代码中,您可以使用try-catch和while循环来尝试连接多次。