Flask/Gunicornを使用してWebアプリケーションを実行していますが、ライフサイクル管理について質問があります。 Java世界でサーブレットを使用した経験が豊富です。
サービスへのRESTfulインターフェイスを作成しています。このサービスは常にサーバー上で実行されており、一連のサブサーバーと通信および制御します。 Javaでは、リスナーとサーブレット初期化メソッドを使用して、サービスが作成および初期化されます(たとえば、従来はmain()
にあるセットアップ)。
同等のセットアップと構成はFlaskのどこにありますか?データベース接続プールの作成、サブサーバーへのhelloメッセージの送信、永続化されたシステム状態の初期値へのリセットなどのタスクを考えています。
それはFlaskのbefore_first_request
メソッドに当てはまりますか?
@Pyrceのコメントに基づいて、私はmain.py
を作成できると思います。
app = Flask(your_app_name)
#initialization code goes here
次に、次のコマンドで実行します。
>gunicorn main:app
同じmain()メソッドパラダイムを引き続き使用できます。以下のこのスターターコードを参照してください。
app = Flask(your_app_name) # Needs defining at file global scope for thread-local sharing
def setup_app(app):
# All your initialization code
setup_app(app)
if __name__ == '__main__':
app.run(Host=my_dev_Host, port=my_dev_port, etc='...')
before_first_request
メソッドは、これらすべての項目を処理することもできます。ただし、サーバーの起動ではなく、最初のリクエストでセットアップが遅れます。