什么原因导致python套接字超时

时间:2016-09-27 08:26:03

标签: python sockets python-3.x urllib

我有一个在Linux上运行的简单Python代码(Raspbian)并使用urlopen连接到服务器(基本上这是使用Python socket):

 req = urllib.request.Request('myServer', data = params, headers = head)
 try:
    response = urllib.request.urlopen(req, timeout = 20)
 except:

来自socket timeout doc

  • timeout=None将以blocking模式执行这不是我想要的,因为如果我没有互联网连接,它将永远挂起
  • timeout=0将以non-blocking模式运行,但是使用它然后我收到错误115(正在进行中的操作)
  • timeout=20将以timeout模式执行,阻止20秒,如果无法创建连接则转义

我的问题:

  1. 为什么non-blocking模式总是失败? (这可能是一种误解,但我认为它应该有时工作而不是总是失败)
  2. 有时会导致20秒超时? (80%的情况urlopen将在1-2s执行,20%超时)

0 个答案:

没有答案