• FastAPI + uvicorn: как перехватить исключение в процессе websocket handshake?

    @diman40 Автор вопроса
    В том то и дело, что исключение возникает не в моем коде, а в коде 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)
  • Какое решение выбрать для интеграции web-интерфейса (php) и сервера (python)?

    @diman40 Автор вопроса
    sim3x, api будет доступен на каком то другом порту, а единственный доступный для клиента порт уже занят под php-клиент. Запросы к api будут идти с машины клиента и не попадут на flask. Или я что-то не понял в предлагаемом решении?