2017-09-23 105 views
0

我想在我的Python REST服务器上实现APN服务与Hyper。 由于APNS现在需要HTTP/2(ALPN)协议,因此我无法通过Hyper连接get_response()。它抛出下面的错误。无法发送ALPN请求到APNS与python 3.5和超

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返回错误

我正在使用亚马逊Linux,我如何使用ALPN向APNS服务器发送请求?谢谢。

回答

0

我尝试使用python 3.6.1与openssl 1.0.2k,它的工作原理。