0

Hyperを使用して Python REST サーバーに APNS サービスを実装しようとしています。APNS は HTTP/2 (ALPN) プロトコルを必要とするようになったためget_response()、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

いくつかの調査を行ったところ、ALPN には OpenSSL 1.0.2 が必要であることがわかりました。この記事を参考に、OpenSSL 1.0.2i と Python 3.5.1 をソースからコンパイルしました。

でsslバージョンを確認し、import ssl print(ssl.OPENSSL_VERSION)を返しOpenSSL 1.0.2i 22 Sep 2016ました。しかし、Falsessl.HAS_ALPNを返します。

Amazon Linux を使用していますが、ALPN を使用してリクエストを APNS サーバーに送信するにはどうすればよいですか? ありがとうございました。

4

1 に答える 1