Flask SocketIO自动重新加载不起作用(在代码更改/开发时)

Flask SocketIO自动重新加载不起作用(在代码更改/开发时),flask,werkzeug,flask-socketio,Flask,Werkzeug,Flask Socketio,使用app.run/flask run--host=0.0.0.0--8080端口,自动重新加载程序(在代码更改时)工作正常 然而,一旦我把烧瓶加入混合物中,它就停止工作了 例如,引入: from flask_socketio import SocketIO, send, emit socketio = SocketIO(app, path='/kpi/socket.io') socketio.run(app, host='0.0.0.0', port=8080, debug=True, use

使用app.run/flask run--host=0.0.0.0--8080端口,自动重新加载程序(在代码更改时)工作正常

然而,一旦我把烧瓶加入混合物中,它就停止工作了

例如,引入:

from flask_socketio import SocketIO, send, emit
socketio = SocketIO(app, path='/kpi/socket.io')
socketio.run(app, host='0.0.0.0', port=8080, debug=True, use_reloader=True, use_debugger=True)
requirements.txt

Flask==1.0.2
Flask-Bootstrap==3.3.7.1
Gunicorn==19.8.1
inotify==0.2.9
pymysql==0.7.2
flask-socketio==3.0.1
eventlet==0.23.0
socketIO-client==0.7.2
我确实会在日志中看到“*使用stat重新启动”,这与我通常运行flask时的情况相同

无关信息:这是在docker容器中运行的,其中我有一个用于开发的compose文件,其中我运行开发模式,并且有一个用于FLASK_DEBUG=1的env变量。使用nginx将其余的代理到端口80,然后我将服务器升级到另一个本地端口。在我添加socketio之前,所有这些都可以很好地工作。

最后这样做:

在dev中运行它(这将为wsgi引入werkzeug调试器)

然后使用supervisord并运行uwsgi,而不是包含该标志

--py-autoreload 1

它们都返回了我在开发中想要的功能。现在只需要让它们只在开发模式下运行,我很好。

尝试使用异步模式='threading'强制执行回退werkzeug。它应该回退到这一点,但这使docker进入了一个重新启动循环,日志中有:“WebSocket传输不可用。安装eventlet或gevent和gevent WebSocket以提高性能”。您是否正在为eventlet进行monkey修补?重载程序是一段相当复杂的代码,如果没有猴子补丁,它不可能在eventlet下工作。@Miguel没有为eventlet进行猴子补丁。
--py-autoreload 1