Mil*_*hen 13 python gunicorn python-socketio
当我使用python-socketio和gunicorn在python环境中开发一些socket.io服务时,我在这里遇到了一个问题。
我使用的是 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')
Run Code Online (Sandbox Code Playgroud)
客户端代码
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>
Run Code Online (Sandbox Code Playgroud)
启动程序
我将文件放在同一文件夹中。并按照命令启动它。
$ Gunicorn --线程 50 应用程序:应用程序

我使用浏览器打开 http://localhost:8000 并且可以正常工作。 问题 但是服务器有问题
WebSocket 传输不可用,您必须安装与异步模式兼容的 WebSocket 服务器才能启用它。有关详细信息,请参阅文档。(此错误的进一步发生将被记录为 INFO 级别)
我尝试这样做
$ gunicorn --log-level INFO --thread 50 app:app
,但我仍然无法从 INFO 日志级别获取有用的信息。
代码可以继续运行,但消息显示我要安装 WebSocket 服务器,但我不知道对于 python-socketio 或 Gunicorn 的情况需要安装哪种包。
我错过了安装什么样的软件包?这是我第一次使用 python-socketio 和 Gunicorn。
接下来我应该做什么?
感谢您的帮助。
Mil*_*hen 11
只需要在这里安装更多的软件包即可。
$ pip install gevent-websocket
$ pip install eventlet
进而
$ gunicorn --thread 50 app:app
如果服务器端需要主动emit到客户端,就需要这个环境。因为这个命令$ gunicorn --thread 50 app:app不能支持这种情况。
工作环境应按如下设置。
$ pip install eventlet==0.30.2
$ gunicorn -k eventlet -w 1 app:app