我正在使用 Python 2.7.5。我有一个网络应用程序,它每隔几分钟就会查询一次 API,并且在最后一天左右一直在成功运行。然而,在让它静置几个小时后,我回来发现我的程序停滞了几个小时没有任何活动。我退出了程序,发现在其中一个 API 调用期间,它在 ssl 握手方法中的大部分时间都停滞不前。
这是回溯:
...
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 143, in __init__
self.do_handshake()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 305, in do_handshake
self._sslobj.do_handshake()
我做了一些研究,这似乎是 Python 2.6 中 SSL 库的问题,但它已得到修复。我想知道为什么我的程序没有抛出异常或任何东西就卡在这里了。
如果有办法为 SSL 握手方法设置超时,我很乐意这样做,因为我想避免我的程序再次因类似的事情而无限期地停止。我正在使用 Requests HTTP 库,它在 Mac OSX 10.9 上运行,如果这很重要的话。建议?
编辑: 我做了一些研究,似乎其他人在 SSL 方面遇到了这个特定问题,尽管在 2.6 中实施了“修复”。但是,尚不确定解决方案是什么。任何帮助表示赞赏。
编辑 3: 添加了我的解决方案作为这个问题的答案。