我使用了许多不同的库,每个库都使用不同的底层方式来建立套接字连接,比如urllib3,requests和httplib。这是在python 2.7.5。
定期,程序挂起其中一个库,等待网络IO完成。
我尝试过socket.setdefaulttimeout(1.0)和socket._GLOBAL_DEFAULT_TIMEOUT = 1.0,但对我的程序都没有任何影响。
设置全局套接字超时的正确方法是什么?
答案 0 :(得分:3)
正如函数的名称所暗示的那样,setdefaulttimeout
只是默认值。如果任何其他库在套接字上设置超时,它将覆盖此默认值。
所以我认为别无选择,只能明确地在每个库中设置超时
可以找到完整的答案here