之前所有写的代码中,有一些使用了Urllib2去请求了公司内部网络的一些REST API。
最近不知道为什么一直频繁报出
_ssl.c:507: EOF occurred in violation of protocol错误。
后来经过多台不同环境的VM的测试,发现Python 2.11和Python 2.12环境下是没有问题的。
我常用的Python 2.7一直出现错误。
但是又不能因为这个就升级Python Version。
后来在Stackoverflow中找到了解决方法。
在网络请求初始化的时候,加入以下代码:
import ssl
from functools import wraps
def sslwrap(func):
@wraps(func)
def bar(*args, **kw):
kw['ssl_version'] = ssl.PROTOCOL_TLSv1
return func(*args, **kw)
return bar
ssl.wrap_socket = sslwrap(ssl.wrap_socket)