这样的事情应该起作用:
>>> import pickle, copyreg, ssl>>>>>> def save_sslcontext(obj):... return obj.__class__, (obj.protocol,)... >>> copyreg.pickle(ssl.SSLContext, save_sslcontext)>>> >>> context = ssl.create_default_context()>>> foo = pickle.dumps(context)>>> _foo = pickle.loads(foo)>>> _foo<ssl.SSLContext object at 0x1011812a8>>>> _foo.protocol2>>>
基本上,a
SSLContext需要a
protocol,并且由于任何原因,实例被腌制时
protocol都不会保存(例如,不在
__reduce__方法中)。如果您需要更多的状态(即其他
args并
kwds从
__init__方法),那么你就需要从扩展的返回值
save_sslcontext上述功能。(请注意,如果您使用的是python
2.x,则相应的模块为
copy_reg)。



