web-dev-qa-db-ja.com

アプリケーションを初期化するフラスコ/ gunicornの場所

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

14
Pace

同じ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メソッドは、これらすべての項目を処理することもできます。ただし、サーバーの起動ではなく、最初のリクエストでセットアップが遅れます。

20
Pyrce