2017-09-23 5 views
0

an APNS gesendet werden. Ich versuche APNS-Dienst auf meinem Python-REST-Server mit Hyper zu implementieren. Da APNS jetzt HTTP/2 (ALPN) Protokoll benötigen, konnte ich get_response() von Hyper-Verbindung nicht. Es löst den folgenden Fehler aus.ALPN-Anfrage kann nicht mit Python 3.5 und Hyper

Traceback (most recent call last): 
    File "/usr/lib64/python3.5/dist-packages/django/core/handlers/exception.py", line 41, in inner 
    response = get_response(request) 
    File "/usr/lib64/python3.5/dist-packages/django/core/handlers/base.py", line 187, in _get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "/usr/lib64/python3.5/dist-packages/django/core/handlers/base.py", line 185, in _get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/usr/lib64/python3.5/dist-packages/django/views/decorators/csrf.py", line 58, in wrapped_view 
    return view_func(*args, **kwargs) 
    File "/usr/lib64/python3.5/dist-packages/django/views/generic/base.py", line 68, in view 
    return self.dispatch(request, *args, **kwargs) 
    File "/usr/lib/python3.5/dist-packages/rest_framework/views.py", line 489, in dispatch 
    response = self.handle_exception(exc) 
    File "/usr/lib/python3.5/dist-packages/rest_framework/views.py", line 449, in handle_exception 
    self.raise_uncaught_exception(exc) 
    File "/usr/lib/python3.5/dist-packages/rest_framework/views.py", line 486, in dispatch 
    response = handler(request, *args, **kwargs) 
    File "/usr/lib/python3.5/dist-packages/rest_framework/decorators.py", line 52, in handler 
    return func(*args, **kwargs) 
    File "/opt/vr-inspire/apns/views.py", line 137, in apns 
    resp = conn.get_response() 
    File "/usr/lib/python3.5/dist-packages/hyper/common/connection.py", line 129, in get_response 
    return self._conn.get_response(*args, **kwargs) 
    File "/usr/lib/python3.5/dist-packages/hyper/http11/connection.py", line 203, in get_response 
    self._sock.fill() 
    File "/usr/lib/python3.5/dist-packages/hyper/common/bufsocket.py", line 169, in fill 
    raise ConnectionResetError() 
ConnectionResetError 

Ich habe etwas Forschung, und es stellt sich heraus, ALPN erfordern OpenSSL 1.0.2. Ich kompilierte OpenSSL 1.0.2i und Python 3.5.1 von Quelle mit Bezug auf this Artikel.

Ich überprüft die SSL-Version mit import ssl print(ssl.OPENSSL_VERSION) und gibt OpenSSL 1.0.2i 22 Sep 2016 zurück. Aber ssl.HAS_ALPN zurück False.

Ich benutze Amazon Linux, wie kann ich ALPN verwenden, um Request zum APNS Server zu senden? Vielen Dank.

Antwort

0

Ich versuche, Python 3.6.1 mit OpenSSL 1.0.2k zu verwenden, und es funktioniert.

Verwandte Themen