Как раскрыть объект ssl.SSLContext

Python 3.5 на windows, попробуйте:

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

Выдает исключение:

  • multiprocessing.Pool порождает новый childern после terminate () на Linux / Python2.7?
  • как устранить проблему «AttributeError: __exit__» в многопроцессорности в Python?
  • Заполнение очереди и управление многопроцессорностью в python
  • Многопроцессор Python с помощью PyCUDA
  • многопроцессорность с большими данными
  • Могу ли я использовать многопроцессорную очередь в функции, называемой пулом Pool.imap?
  •  TypeError: __new__() missing 1 required positional argument: 'protocol' 

    подкласс многопроцессорности. Процесс генерирует одно и то же исключение:

     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() 

  • multiprocessing.Pool () медленнее, чем просто использование обычных функций
  • Python: запись в один файл с очередью при использовании многопроцессорного пула
  • Многопроцессор Python с помощью PyCUDA
  • На каких ядрах ядра работают мои процессы Python?
  • Мониторинг протоколов протоколов JSON
  • Как использовать многопроцессор Python Pool.map для заполнения массива numpy в цикле for
  • One Solution collect form web for “Как раскрыть объект ssl.SSLContext”

    Что-то вроде этого должно работать:

     >>> 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__ ), когда экземпляр маринован. Если вам нужно больше состояний (т. kwds Другие args и kwds из метода __init__ ), тогда вам нужно будет увеличить возвращаемое значение из функции save_sslcontext выше. (Обратите внимание: если вы находитесь в python 2.x, то соответствующий модуль – copy_reg ).

    Python - лучший язык программирования в мире.