Python 3.x 如何导入从create_app()创建的应用程序实例

Python 3.x 如何导入从create_app()创建的应用程序实例,python-3.x,flask,flask-restful,Python 3.x,Flask,Flask Restful,如何导入在app/app.py的create_app()函数中创建的app实例,以便在app/api.py中使用,因为app实例仅返回到我的manage.py 我的项目结构: project/ app/ api.py app.py models.py schema.py ... manage.py requirements.txt README.md 我正在用命令python man

如何导入在
app/app.py
create_app()
函数中创建的
app
实例,以便在
app/api.py
中使用,因为
app
实例仅返回到我的
manage.py

我的项目结构:

project/
    app/
        api.py
        app.py
        models.py
        schema.py
        ...
    manage.py
    requirements.txt
    README.md
我正在用命令
python manage.py

# manage.py
from app.app import create_app

app = create_app()

if __name__ == '__main__':
    app.run(debug=True, host='localhost', port=5000)
如何导入
应用程序
实例导入
app/api.py
,以便我可以使用
app.logger.info(…)


如果我调用
create\u app()
它将创建一个新实例,而不是已经运行的实例?

无需导入app

您可以使用
当前应用程序
帮助程序

从flask导入当前应用程序

您可以将其视为应用程序实例的代理

官方文件的链接:

米格尔·格林伯格(Miguel Grinberg)也提供了关于这一主题的非常好的信息:


(在页面上搜索当前应用程序)

无需导入应用程序

您可以使用
当前应用程序
帮助程序

从flask导入当前应用程序

您可以将其视为应用程序实例的代理

官方文件的链接:

米格尔·格林伯格(Miguel Grinberg)也提供了关于这一主题的非常好的信息:


(在页面上搜索
current\u app

是否与在
app/api.py
中添加
app=Flask(\uu\u name\uuuu)
相同?不,它是一个代理-想象您从两个不同的窗口查看同一对象<另一方面,code>app=Flask(名称)
创建第二个实例。我将在Flask docs中使用指向
current\u app
的链接更新上述答案。这与在
app/api.py
中添加
app=Flask(\uu name\uuu)
相同吗?不,它是一个代理-想象你从两个不同的窗口看同一个对象<另一方面,code>app=Flask(名称)
创建第二个实例。我将在Flask docs中使用指向当前应用程序的链接更新上述答案。
# app/app.py
def create_app():
    app = Flask(__name__)
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    app.config['SQLALCHEMY_DATABASE_URI'] = config['mysql']['db_uri']
    app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {'pool_recycle': 3000, 'pool_pre_ping': True, }

    register_extensions(app)

    @app.before_first_request
    def setup_logging():
        gunicorn_error_logger = logging.getLogger('gunicorn.error')
        app.logger.handlers.extend(gunicorn_error_logger.handlers)
        app.logger.setLevel(gunicorn_error_logger.level)

    return app

def register_extensions(app):
    db.init_app(app)
    api.init_app(app)
# app/api.py
from flask import Flask, jsonify
from flask_restful import Api, Resource

api = Api()


class TestGet(Resource):

    def get(self):
        app.logger.info('ok') ## Here I wish to use the app instance for logging
        return 'ok'

api.add_resource(TestGet, '/ok')