2017-06-01 8 views
0

私はflask-socketIOに基づいたアプリケーションを持っています。フラスコサーバーの起動直前にコードを実行したい マイapp.pyファイルは次のようになります。FLASK_APP=app.py flask run --host=0.0.0.0次のように、私はコンソール出力を取得::私はプログラムを実行するとフラスコ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') 

* Serving Flask-SocketIO app "app" その後、いくつかのクライアントは私のアプリに接続して、私が期待どおりに動作しますが、I socketio.run(app)を上回るprintを見たいと思っています。

サーバーの起動前にコードを実行するにはどうすればよいですか?

+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(アプリ) は、私はまた、@ socketio.before_first_requestにしようとしたが、私はあなたがこの中に設定しているそうでなければ動作するはずだ@trojek socketioが – trojek

+0

「before_first_request」は属性を持っていないエラーが出ます間違った方法...あなたのすべての 'app.py'コードを含めることができますか?だから私は見てみることができます... –

+0

私のマシンでは全く同じ作業です。 –

関連する問題