2017-09-23 19 views
0

Hyper으로 파이썬 REST 서버에 APNS 서비스를 구현하려고합니다. APNS에 이제 HTTP/2 (ALPN) 프로토콜이 필요하므로 하이퍼 연결에서 get_response()을 수행 할 수 없었습니다. 아래 오류가 발생합니다.파이썬 3.5 및 하이퍼로 APNS에 ALPN 요청을 보낼 수 없습니다.

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 

몇 가지 연구를했는데 ALPN은 OpenSSL 1.0.2가 필요합니다. 소스에서 OpenSSL 1.0.2i와 Python 3.5.1을 컴파일하여 this 문서를 참조하십시오.

import ssl print(ssl.OPENSSL_VERSION)으로 ssl 버전을 확인한 결과 OpenSSL 1.0.2i 22 Sep 2016을 반환합니다. 그러나 ssl.HAS_ALPN 반환 거짓.

아마존 리눅스를 사용하고 있는데, ALPN을 사용하여 APNS 서버에 요청을 보내려면 어떻게해야합니까? 고맙습니다.

답변

0

나는 openssl 1.0.2k로 파이썬 3.6.1을 사용하려고 시도한다.