引入flask_socketio来处理一个简单的已经制作好的烧瓶应用程序



我是Flask和flask-socketio的新手。

我第一次使用Flask官方文档制作教程应用程序。

然后我用flask-socketio制作了一个简单的聊天应用程序。

我需要的是Flask教程中的身份验证系统和SocketIO教程中的简单聊天功能。

Flask教程在__init__.py中的create_app方法中运行Flask应用程序。

__init__.py

def create_app(test_config=None):
# create and configure the app
app = Flask(__name__, instance_relative_config=True)
app.config.from_mapping(
SECRET_KEY='dev',
DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
)
# ...

return app

SocketiIO教程只有一个运行SocketIO应用程序的main.py文件。

main.py

app = Flask(__name__)
app.config['SECRET_KEY'] = 'vnkdjnfjknfl1232#'
socketio = SocketIO(app)

@app.route('/')
def sessions():
return render_template('session.html')
# ...
if __name__ == '__main__':
socketio.run(app, debug=True)

我读过很多关于将flask-socketio与已经制作的Flask应用程序集成的问题,但所有这些问题都试图使用main.py文件进行集成,您可以将socketio.run()方法放在if __name__中运行。

是否可以在同一个应用程序中同时运行http服务器和socket服务器,从create_app方法初始化应用程序?

对于有这个问题的人,包的创建者在这里教他们如何处理这个问题。

socketio = SocketIO()
def create_app(test_config=None):
# create and configure the app
app = Flask(__name__, instance_relative_config=True)
app.config.from_mapping(
SECRET_KEY='dev',
DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
)
# ...
socketio.init_app(app)
return app

只需要创建一个全局SocketIO对象,然后在creat_app中启动即可。

相关内容

最新更新