我有一个flask API,一切正常,一切都已固定,以便进行本地测试,这是flaskinit.py:
import os
from os.path import join, dirname
import cloudinary
import sentry_sdk
from sentry_sdk.integrations.flask import FlaskIntegration
from dotenv import load_dotenv
from flask import Flask
from flask_cors import CORS
from flask_marshmallow import Marshmallow
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
cors = CORS()
marsh = Marshmallow()
db = SQLAlchemy()
migrate = Migrate()
limiter = Limiter(key_func=get_remote_address)
from deblurrer.api import api_bp
def create_app(config='flask_config.Production'):
"""
Init core application.
Args:
config: can be import to object or the object itself
Returns:
Application instance
"""
# Load .env vars
dotenv_path = join(dirname(dirname(__file__)), '.env')
load_dotenv(dotenv_path)
# Setup default production config
app = Flask('deblurrer', instance_relative_config=True)
app.config.from_object(config)
# Sentry config
sentry_sdk.init(
dsn=os.environ.get('SENTRY_DNS'),
integrations=[FlaskIntegration()]
)
# Init Cloudinary credentials
cloudinary.config(
cloud_name = os.environ.get('CLOUDINARY_CLOUD_NAME'),
api_key = os.environ.get('CLOUDINARY_API_KEY'),
api_secret = os.environ.get('CLOUDINARY_API_SECRET'),
)
# Init Plugins
cors.init_app(app)
marsh.init_app(app)
db.init_app(app)
migrate.init_app(app, db)
limiter.init_app(app)
with app.app_context():
app.register_blueprint(api_bp, url_prefix='/api')
# Create tables for models
db.create_all()
return app
当我执行docker-compose up
时,PostgreSQL容器不会在flaskapi容器之前启动,这是正常的和预期的。建议准备API,以便在任何时候(包括开始时间)优雅地管理数据库不可用性
我的问题是,我如何在我的烧瓶应用程序上做到这一点?在初始化SQLAlchemy时,似乎必须在init.py上执行此操作,但我不知道如何进行,我尝试了一些研究,但没有明显的结果,您能帮助我吗
谢谢
继续努力
相关问题 更多 >
编程相关推荐