Транспорт WebSocket недоступен, для его включения необходимо установить сервер WebSocket, совместимый с вашим асинхронным режимом

#python #gunicorn #python-socketio

Вопрос:

Когда я разрабатываю какой-нибудь сокет.служба ввода-вывода в среде python с помощью python-socketio и gunicorn я сталкиваюсь здесь с проблемой.

Я использую Mac OS X и использую python 3.7.

Настройка среды
$ pip install python-socketio
$ pip install gunicorn

код на стороне сервера
app.py

 import socketio

sio = socketio.Server()
app = socketio.WSGIApp(sio, static_files = {
    '/': './socketio-client.html'
})

@sio.event
def connect(sid, environ):
    print(sid, 'connected')

@sio.event
def disconnect(sid):
    print(sid, 'disconnected')

 

код на стороне клиента
socketio-client.html

 <html>
  <head>
    <title>Socket.IO Demo</title>
    <script src="https://cdn.socket.io/3.1.3/socket.io.min.js" integrity="sha384-cPwlPLvBTa3sKAgddT6krw0cJat7egBga3DJepJyrLl4Q9/5WLra3rrnMcyTyOnh" crossorigin="anonymous"></script>
  </head>
  <body>
    <h1>Socket.IO Demo</h1>
    <script>
      const sio = io();
      sio.on('connect', () => {
        console.log('connected');
      });

      sio.on('disconnect', () => {
        console.log('disconnected');
      });
    </script>
  </body>
</html>
 

Запустить программу
Я положил файлы в ту же папку. И запустите его, выполнив команду.
$ gunicorn —приложение для 50 потоков:приложение
введите описание изображения здесь

Я использую браузер, чтобы открыть http://localhost:8000 и это работает. Проблема, но есть проблема с сервером

Транспорт WebSocket недоступен, для его включения необходимо установить сервер WebSocket, совместимый с вашим асинхронным режимом. Подробные сведения см. в документации. (дальнейшие случаи этой ошибки будут регистрироваться с информацией об уровне)

Я стараюсь делать
$ gunicorn --log-level INFO --thread 50 app:app
Но я все еще не могу получить полезную информацию с уровня информационного журнала.

Код может продолжать выполняться, но в сообщении показано, что мне нужно установить сервер WebSocket, и я не знаю, какой пакет мне нужно установить для этого случая python-socketio или gunicorn.

Какой пакет я пропустил для установки? Я впервые использую python-socketio и gunicorn.
Что мне делать дальше?

Спасибо за вашу помощь.

Комментарии:

1. Взгляните на варианты развертывания здесь и далее — python-socketio.readthedocs.io/en/latest/server.html#eventlet .

Ответ №1:

Здесь просто нужно установить больше пакетов.
$ pip install gevent-websocket
$ pip install eventlet

И затем
$ gunicorn --thread 50 app:app

введите описание изображения здесь

Обновление 1:

Если на стороне сервера требуется активный выброс на сторону клиента, ему потребуется эта среда. Потому что эта команда $ gunicorn --thread 50 app:app не может поддерживать эту ситуацию.

Рабочая среда должна быть задана следующим образом.

$ pip install eventlet==0.30.2
$ gunicorn -k eventlet -w 1 app:app