検索

ホームページ  >  に質問  >  本文

设计模式 - python flask 工厂函数?

如题。

今天在看flask web,说到了工厂函数,不是很理解,请大神来指教一下,上源码。

app/init.py:程序包的构造文件

from flask import Flask, render_template
from flask.ext.bootstrap import Bootstrap
from flask.ext.mail import Mail
from flask.ext.moment import Moment
from flask.ext.sqlalchemy import SQLAlchemy
from config import config

bootstrap = Bootstrap()
mail = Mail()
moment = Moment()
db = SQLAlchemy()

def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)
    bootstrap.init_app(app)
    mail.init_app(app)
    moment.init_app(app)
    db.init_app(app)

    return app
PHPzPHPz2829日前762

全員に返信(3)返信します

  • 天蓬老师

    天蓬老师2017-04-17 15:06:33

    一般的な意味は、アプリの量産に便利ということです。この create_app 関数メ​​ソッドを使用して、何千ものアプリを作成できます。

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-17 15:06:33

    この例のファクトリー関数 create_app の本当の目的は、実際には 1 つだけです。アプリケーションのさまざまな使用シナリオに応じてさまざまな構成を使用することです。その中心となるのは、次のことです。

    リーリー

    したがって、アプリケーション インスタンスの作成プロセスをファクトリ関数に渡し、ファクトリ関数を使用して、さまざまな環境に適したアプリケーションを作成するために使用する構成を選択する必要があります

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 15:06:33

    wslshanlin の回答を補足します。

    create_app
    のコードをグローバル名前空間 (つまり、manager.py) に移動すると、複数のアプリの構成が競合するなど、説明できない問題が発生します。

    この目的は次のとおりです:

    1. テスト。アプリケーションの複数のインスタンスを使用し、各インスタンスに異なる構成を割り当てて、それぞれの異なるシナリオをテストできます。

    2. 複数のインスタンス。次のシナリオを想像してください。同じアプリケーションの異なるバージョンを同時に実行する必要がある場合は、Web サーバーで複数のインスタンスを構成し、異なる構成を割り当てることができますが、ファクトリ関数を使用すると、このアプリケーションの異なるインスタンスを割り当てることができます。プロセスで実行中です!

    返事
    0
  • キャンセル返事