• <small id='usxtc'></small><noframes id='usxtc'>

    1. <legend id='usxtc'><style id='usxtc'><dir id='usxtc'><q id='usxtc'></q></dir></style></legend>

        <i id='usxtc'><tr id='usxtc'><dt id='usxtc'><q id='usxtc'><span id='usxtc'><b id='usxtc'><form id='usxtc'><ins id='usxtc'></ins><ul id='usxtc'></ul><sub id='usxtc'></sub></form><legend id='usxtc'></legend><bdo id='usxtc'><pre id='usxtc'><center id='usxtc'></center></pre></bdo></b><th id='usxtc'></th></span></q></dt></tr></i><div id='usxtc'><tfoot id='usxtc'></tfoot><dl id='usxtc'><fieldset id='usxtc'></fieldset></dl></div>
      1. <tfoot id='usxtc'></tfoot>

          <bdo id='usxtc'></bdo><ul id='usxtc'></ul>

        如何腌制 ssl.SSLContext 对象

        时间:2023-05-26

        <small id='Tbgif'></small><noframes id='Tbgif'>

      2. <tfoot id='Tbgif'></tfoot>

              <legend id='Tbgif'><style id='Tbgif'><dir id='Tbgif'><q id='Tbgif'></q></dir></style></legend>
              <i id='Tbgif'><tr id='Tbgif'><dt id='Tbgif'><q id='Tbgif'><span id='Tbgif'><b id='Tbgif'><form id='Tbgif'><ins id='Tbgif'></ins><ul id='Tbgif'></ul><sub id='Tbgif'></sub></form><legend id='Tbgif'></legend><bdo id='Tbgif'><pre id='Tbgif'><center id='Tbgif'></center></pre></bdo></b><th id='Tbgif'></th></span></q></dt></tr></i><div id='Tbgif'><tfoot id='Tbgif'></tfoot><dl id='Tbgif'><fieldset id='Tbgif'></fieldset></dl></div>

              • <bdo id='Tbgif'></bdo><ul id='Tbgif'></ul>
                  <tbody id='Tbgif'></tbody>
                  本文介绍了如何腌制 ssl.SSLContext 对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  限时送ChatGPT账号..

                  Windows 上的 Python 3.5,试试这些:

                  Python 3.5 on windows, try these:

                  import ssl, pickle, multiprocessing
                  context = ssl.create_default_context()
                  foo = pickle.dumps(context)
                  pickle.loads(foo)
                  

                  抛出异常:

                  TypeError: __new__() missing 1 required positional argument: 'protocol'
                  

                  multiprocessing.Process 的子类抛出同样的异常:

                  subclass of multiprocessing.Process throws the same exception:

                  class Foo(multiprocessing.Process):
                      def __init__(self):
                          super().__init__()
                          self.context = ssl.create_default_context()
                  
                      def run(self):
                          pass
                  
                  if __name__ == '__main__':
                      foo = Foo()
                      foo.start()
                  

                  推荐答案

                  这样的东西应该可以工作:

                  Something like this should work:

                  >>> 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.protocol
                  2
                  >>> 
                  

                  基本上,一个 SSLContext 需要一个 protocol,并且无论出于何种原因,protocol 都不会被保存(例如,它不在 >__reduce__ 方法)当实例被腌制时.如果您需要更多状态(即 __init__ 方法中的其他 argskwds),那么您需要从上面的 save_sslcontext 函数.(注意,如果你在 python 2.x 中,那么适当的模块是 copy_reg).

                  Basically, a SSLContext needs a protocol, and for whatever reason, the protocol is not saved (e.g. it's not in a __reduce__ method) when the instance is pickled. If you need more state (i.e. other args and kwds from the __init__ method), then you'll need to extend the return value from the save_sslcontext function above. (Note, if you are in python 2.x, then the appropriate module is copy_reg).

                  这篇关于如何腌制 ssl.SSLContext 对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:故意在python中创建一个孤儿进程 下一篇:如何在多个线程中运行`selenium-chromedriver`

                  相关文章

                  最新文章

                    <legend id='l6MXD'><style id='l6MXD'><dir id='l6MXD'><q id='l6MXD'></q></dir></style></legend>
                    <tfoot id='l6MXD'></tfoot>

                        <bdo id='l6MXD'></bdo><ul id='l6MXD'></ul>
                    1. <small id='l6MXD'></small><noframes id='l6MXD'>

                      <i id='l6MXD'><tr id='l6MXD'><dt id='l6MXD'><q id='l6MXD'><span id='l6MXD'><b id='l6MXD'><form id='l6MXD'><ins id='l6MXD'></ins><ul id='l6MXD'></ul><sub id='l6MXD'></sub></form><legend id='l6MXD'></legend><bdo id='l6MXD'><pre id='l6MXD'><center id='l6MXD'></center></pre></bdo></b><th id='l6MXD'></th></span></q></dt></tr></i><div id='l6MXD'><tfoot id='l6MXD'></tfoot><dl id='l6MXD'><fieldset id='l6MXD'></fieldset></dl></div>