В том то и дело, что исключение возникает не в моем коде, а в коде uvicorn. Причина исключения - некорректно сформированный заголовок в запросе клиента.
Ищу защиту от таких ситуаций. Последнее направление, в котором сейчас ищу - перед uvicorn стоит nginx и отбрасывает таких клиентов.
В трасировке исключения ссылка как раз на разбор заголовков:
Error in opening handshake
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/websockets/server.py", line 134, in handler
extra_headers=self.extra_headers,
File "/usr/local/lib/python3.7/site-packages/websockets/server.py", line 532, in handshake
early_response = await early_response_awaitable
File "/usr/local/lib/python3.7/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 98, in process_request
for name, value in headers.raw_items()
File "/usr/local/lib/python3.7/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 98, in <listcomp>
for name, value in headers.raw_items()
UnicodeEncodeError: 'ascii' codec can't encode characters in position 241-254: ordinal not in range(128)
sim3x, api будет доступен на каком то другом порту, а единственный доступный для клиента порт уже занят под php-клиент. Запросы к api будут идти с машины клиента и не попадут на flask. Или я что-то не понял в предлагаемом решении?
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Ищу защиту от таких ситуаций. Последнее направление, в котором сейчас ищу - перед uvicorn стоит nginx и отбрасывает таких клиентов.
В трасировке исключения ссылка как раз на разбор заголовков: