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