【发布时间】:2021-01-29 07:01:03
【问题描述】:
我如何导入在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/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')
如何导入app
实例到app/api.py 以便我可以使用app.logger.info(...)?
如果我调用create_app(),它将创建一个新实例,而不是已经在运行的实例?
【问题讨论】:
标签: python-3.x flask flask-restful