Как исправить «Ошибка Python: элемент последовательности обновления словаря # 0 имеет длину 1; требуется 2» в Matlab? - PullRequest
0 голосов
/ 19 июня 2019

При попытке подключиться к Emotiv Cortex Service, вызвав Python 3.7. из Matlab 2018a через websocket-клиент для Python

py.importlib.import_module('websocket')
py.importlib.import_module('ssl')
ws = py.websocket.WebSocket()
ws.connect("wss://emotivcortex.com:54321", pyargs('sslopt','{"cert_reqs": ssl.CERT_NONE}'))

эта ошибка возникает:

Error using _http>_ssl_socket (line 245)
Python Error: ValueError: dictionary update sequence element #0 has length 1; 2 is required

Error in _http>connect (line 126)
            sock = _ssl_socket(sock, options.sslopt, hostname)

Error in _core>connect (line 223)
                               options.pop('socket', None))

Следующие эквивалентные строки хорошо работают в Python 3.7. (PyCharm)

import websocket
import ssl 
ws = websocket.create_connection("wss://echo.websocket.org", sslopt={"cert_reqs": ssl.CERT_NONE})
ws.send("{ "jsonrpc": "2.0", "method": "queryHeadsets", "params": {}, "id": 1 }")

и т. Д., Начиная соединение с Cortex Service

Строка, вызывающая ошибку:

ws.connect("wss://emotivcortex.com:54321", pyargs('sslopt','{"cert_reqs": ssl.CERT_NONE}')

Некоторые ограничения:

  • Кажется, Matlab не позволяет напрямую пропускать проверку сертификата при безопасном соединении через веб-сокет, поэтому цикл через Python

  • Интересно, что тот же синтаксис работает с этой командой в Matlab:

    ws = py.websocket.WebSocket ("wss: //emotivcortex.com: 54321", pyargs ('sslopt', '{"cert_reqs": ssl.CERT_NONE}'))

  • Однако после выполнения последнего ws.send ("userRequest ...") вызывает эту ошибку:

    Ошибка при использовании формата _abnf> (строка 241) Ошибка Python: TypeError: объект 'str' не вызывается

    Ошибка в _core> send_frame (строка 272) data = frame.format ()

    Ошибка в _core> send (строка 253) вернуть self.send_frame (frame)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...