【问题标题】:python try if socket times out, try again如果套接字超时,python尝试,再试一次
【发布时间】:2013-07-11 17:25:19
【问题描述】:

当我得到套接字超时异常时重试的最聪明的方法是什么

尝试: opener=urllib.FancyURLopener(代理) res=opener.open(req)

例外情况除外: self.writeLog(详情)

对于上面的代码,我从套接字中得到一个超时错误,我想更改代理并重试我该怎么做(我的函数不能递归完成)我应该使用类似 while error is not socket 的东西超时继续这样做?还是应该做一段时间 True 并且在除了部分更改代理?

什么是最聪明的方法?

【问题讨论】:

    标签: python sockets


    【解决方案1】:

    你的意思是这样的吗?

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • while 循环的条件是什么?是否会在主程序中而不是在函数本身中尝试除外?
      • 你可以使用 while(true) 和它连接成功的 break 语句。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 2018-01-18
      • 2020-08-19
      • 1970-01-01
      • 2018-03-16
      • 2016-07-11
      相关资源
      最近更新 更多