当与gevent一起使用时,socket.getaddrinfo()会永远阻塞
问题描述:
使用httplib2
,我用gevent
发送多个请求,一段时间后http.request()
的http.request()
方法被永远阻止.
经过检查,我发现阻塞功能在httplib2中的socket.getaddrinfo()
链接.
Using httplib2
, I am sending multiple requests with gevent
, after some time http.request()
method of httplib2
is getting blocked forever.
On checking I found that blocking function is socket.getaddrinfo()
in httplib2 link.
答
使用socket.setdefaulttimeout()
设置默认超时.由于未指定getaddrinfo的超时,它将使用默认超时.
set default timeout using socket.setdefaulttimeout()
. since timeout of getaddrinfo is not specified it will use default timeout.