Python 控制外部库中的套接字超时
我正在重新开发我的个人网站,我遇到了一个小问题,我希望有一个干净的解决办法: 我正在使用各种操作系统包与StackExchange(多个站点)和Twitter(仅针对我的提要)通信。为了在刷新烧杯驱动的缓存时加快速度,我使用了一个通用的Python 控制外部库中的套接字超时,python,urllib2,Python,Urllib2,我正在重新开发我的个人网站,我遇到了一个小问题,我希望有一个干净的解决办法: 我正在使用各种操作系统包与StackExchange(多个站点)和Twitter(仅针对我的提要)通信。为了在刷新烧杯驱动的缓存时加快速度,我使用了一个通用的QueuedCall类(我自己设计的)对请求进行多线程处理 现在,当供应商成立时,这一切都很好。但是,如果提供者停机,它可能会挂起(这显然是我想要避免的)。不幸的是,我使用的libs没有公开设置超时的方法。在我看来,我有两个选择之一: 在指定的超时后手动终止线程。
QueuedCall
类(我自己设计的)对请求进行多线程处理
现在,当供应商成立时,这一切都很好。但是,如果提供者停机,它可能会挂起(这显然是我想要避免的)。不幸的是,我使用的libs没有公开设置超时的方法。在我看来,我有两个选择之一:
urlib2
将识别的超时urllib2
的默认超时?您在寻找什么
socket.setdefaulttimeout
我很困惑。最新的urllib2至少对urlopen支持超时()。@CarlF:是的,但我自己并没有调用
urlopen
,而是在一个我不想修改的外部库中完成的。好的。我明白了。您使用的是“外部库”,您怀疑(或可能知道)它在幕后调用urllib2。如何确定用于建立连接的是urllib2,而不是urllib、httplib或套接字?我想知道@Donkopotamus是否有正确的答案。我对来源进行了分析。太棒了,正是我想要的:p这是一个出乎意料的解决方案。我不会想到在套接字包中搜索url相关的东西。你这么说很有道理。