2017-06-01 33 views
0

我有一个基于flask-socketIO的应用程序。我想在flask服务器启动之前执行一些代码。 我app.py文件看起来像这样:如何在flask socket.io服务器启动之前执行一些代码?

from flask import Flask 
from flask_cors import CORS 
from flask_socketio import SocketIO 


app = Flask(__name__) 
app.config['SECRET_KEY'] = 'secret!' 
socketio = SocketIO(app) 
CORS(app) 

@socketio.on('connect') 
def test_connect(): 
    print("Client connected") 


@socketio.on('disconnect') 
def test_disconnect(): 
    print('Client disconnected') 

if __name__ == "__main__": 
    socketio.run(app, debug=False, host='0.0.0.0') 

当我运行程序:FLASK_APP=app.py flask run --host=0.0.0.0,我得到的控制台输出如下:* Serving Flask-SocketIO app "app" 那么一些客户端连接到我的应用程序和它的作品如我所料,但我希望看到print这是socketio.run(app)以上。

如何在服务器启动之前执行代码?

+0

是否尚未运行?因为python是一种解释型语言,所以应该打印。 – crazyglasses

+0

它不运行,但我可以在服务器启动之前执行代码,如果我把它(代码)放在导入下面,但我认为它不是pythonic解决方案。 – trojek

+0

编号在python中添加不正确的方法。看看你是否可以创建一个自定义函数并在'socket.run()'之前调用它' – crazyglasses

回答

1

使用before_fist_request

@app.before_first_request 
def your_function(): 
    print("execute before server starts") 

更新: enter image description here

+0

它不适用于我,在我的app.py文件的开始处我有: 应用=瓶(__ name__) socketio = SocketIO(APP) 我也试着@ socketio.before_first_request,但我得到的是socketio有“before_first_request” – trojek

+0

没有属性错误@trojek它应该工作,否则你在这个设置错误的方式......你可以包括你所有的'app.py'代码。所以我可以看看... –

+0

完全相同的工作在我的机器。 –

相关问题