首页 > 解决方案 > 使用 Twisted Websocket Python 获取 SSL 错误

问题描述

嗨,我正在尝试使用 Twisted websocket 在 Ubuntu 20.0 上使用 Python 3.8.0 连接到 wss://ws.okex.com:8443/ws/v5/private。

这可以正常运行 5-20 分钟,然后我总是会遇到以下 2 个错误之一:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/twisted/python/log.py", line 101, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "/usr/local/lib/python3.8/dist-packages/twisted/python/log.py", line 85, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "/usr/local/lib/python3.8/dist-packages/twisted/python/context.py", line 118, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/usr/local/lib/python3.8/dist-packages/twisted/python/context.py", line 83, in callWithContext
    return func(*args, **kw)
--- <exception caught here> ---
  File "/usr/local/lib/python3.8/dist-packages/twisted/internet/posixbase.py", line 686, in _doReadOrWrite
    why = selectable.doRead()
  File "/usr/local/lib/python3.8/dist-packages/twisted/internet/tcp.py", line 247, in doRead
    return self._dataReceived(data)
  File "/usr/local/lib/python3.8/dist-packages/twisted/internet/tcp.py", line 252, in _dataReceived
    rval = self.protocol.dataReceived(data)
  File "/usr/local/lib/python3.8/dist-packages/twisted/protocols/tls.py", line 324, in dataReceived
    self._flushReceiveBIO()
  File "/usr/local/lib/python3.8/dist-packages/twisted/protocols/tls.py", line 295, in _flushReceiveBIO
    self._flushSendBIO()
  File "/usr/local/lib/python3.8/dist-packages/twisted/protocols/tls.py", line 248, in _flushSendBIO
    bytes = self._tlsConnection.bio_read(2 ** 15)
  File "/usr/local/lib/python3.8/dist-packages/OpenSSL/SSL.py", line 1848, in bio_read
    self._handle_bio_errors(self._from_ssl, result)
  File "/usr/local/lib/python3.8/dist-packages/OpenSSL/SSL.py", line 1826, in _handle_bio_errors
    _raise_current_error()
  File "/usr/local/lib/python3.8/dist-packages/OpenSSL/_util.py", line 57, in exception_from_error_queue
    raise exception_type(errors)
OpenSSL.SSL.Error: []

或者

Unhandled Error
Traceback (most recent call last):                                                                                              
File "/usr/local/lib/python3.8/dist-packages/twisted/python/log.py", line 101, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "/usr/local/lib/python3.8/dist-packages/twisted/python/log.py", line 85, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "/usr/local/lib/python3.8/dist-packages/twisted/python/context.py", line 118, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/usr/local/lib/python3.8/dist-packages/twisted/python/context.py", line 83, in callWithContext
    return func(*args, **kw)
--- <exception caught here> ---
  File "/usr/local/lib/python3.8/dist-packages/twisted/internet/posixbase.py", line 686, in _doReadOrWrite
    why = selectable.doRead()
  File "/usr/local/lib/python3.8/dist-packages/twisted/internet/tcp.py", line 247, in doRead
    return self._dataReceived(data)
  File "/usr/local/lib/python3.8/dist-packages/twisted/internet/tcp.py", line 252, in _dataReceived
    rval = self.protocol.dataReceived(data)
  File "/usr/local/lib/python3.8/dist-packages/twisted/protocols/tls.py", line 324, in dataReceived
    self._flushReceiveBIO()
  File "/usr/local/lib/python3.8/dist-packages/twisted/protocols/tls.py", line 295, in _flushReceiveBIO
    self._flushSendBIO()
  File "/usr/local/lib/python3.8/dist-packages/twisted/protocols/tls.py", line 248, in _flushSendBIO
    bytes = self._tlsConnection.bio_read(2 ** 15)
  File "/usr/local/lib/python3.8/dist-packages/OpenSSL/SSL.py", line 1848, in bio_read
    self._handle_bio_errors(self._from_ssl, result)
  File "/usr/local/lib/python3.8/dist-packages/OpenSSL/SSL.py", line 1823, in _handle_bio_errors
    raise ValueError("unknown bio failure")
builtins.ValueError: unknown bio failure

但是,如果我在 Windows(相同的 python 版本)上运行它,它工作正常。我还发现这篇没有答案的帖子:How to solve OpenSSL empty Error with Twython?

标签: pythonpython-3.xwebsockettwythontwisted.web

解决方案


推荐阅读