2017-06-01 63 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

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

相關問題