Python 带Werkzeug的烧瓶socketio
我的旧代码,我使用werkzeug run_简单运行应用程序。现在,我需要使用socketio,如何将run_simple()更改为socketio.run() 我的旧代码:Python 带Werkzeug的烧瓶socketio,python,flask,flask-socketio,Python,Flask,Flask Socketio,我的旧代码,我使用werkzeug run_简单运行应用程序。现在,我需要使用socketio,如何将run_simple()更改为socketio.run() 我的旧代码: from werkzeug.serving import run_simple from werkzeug.wsgi import DispatcherMiddleware from admin import api, frontend application = DispatcherMiddleware(fronte
from werkzeug.serving import run_simple
from werkzeug.wsgi import DispatcherMiddleware
from admin import api, frontend
application = DispatcherMiddleware(frontend.create_app(), {
'/api': api.create_app()
})
if __name__ == '__main__':
run_simple('0.0.0.0', 5000, application, use_reloader=True, use_debugger=False)
我试过:
from werkzeug.serving import run_simple
from werkzeug.wsgi import DispatcherMiddleware
from flask.ext.socketio import SocketIO
from admin import api, frontend
app = frontend.create_app()
application = DispatcherMiddleware(frontend.create_app(), {
'/api': api.create_app()
})
socketio = SocketIO(app)
if __name__ == '__main__':
# run_simple('0.0.0.0', 5000, application, use_reloader=True, use_debugger=False)
socketio.run(app, host='0.0.0.0', port=5000, use_reloader=True, use_debugger=False)
但它不起作用。谁能帮帮我吗 这似乎可以通过包装和替换烧瓶应用程序
wsgi_app
属性来实现
您是否尝试将
应用程序
传递给SocketIO
?Flask SocketIO严重依赖Flask。你用的是烧瓶,还是仅仅用Werkzeug?@dirn我试过了,但没用:(@Miguel:两个都用。@Phươnguyễn我在您的代码中看到的唯一明显的问题是,您使用app
初始化socketio扩展,但是在dispatcher中间件中放置了一个不同的应用程序实例。这两个实例应该是同一个实例。除此之外,我真的不能说。如果您描述这对您不起作用的原因,并包括任何得到的错误或堆栈跟踪。
app = frontend.create_app()
app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {
'/api': api.create_app()
})
socketio = SocketIO(app)
if __name__ == "__main__":
socketio.run(app, host='0.0.0.0', port=5000, use_reloader=True, use_debugger=False)