#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