如何为部署在 Elastic beanstalk 上的 Flask 应用正确配置我的 RDS?

问题描述 投票:0回答:0

所以我创建了一个使用 Elastic beanstalk 部署的烧瓶应用程序。我配置了一个MySQL RDS数据库,数据库到flask app在同一个环境下。数据库似乎已连接并且工作正常,但过了一会儿连接丢失,我收到 500 服务器过载错误。发生这种情况是因为数据库和应用程序已断开连接。我尝试使用 @before_first_request 装饰器强制连接,但它似乎不起作用。每当我重新启动我的应用程序服务器时,数据库和应用程序连接都可以正常工作。我使用 SQLAlchemy 作为我的 ORM。不过,我在本地连接 MySQL Workbench 没有问题。这是因为我使用的是免费套餐吗? 这是我的 app.py 代码:

app = Flask(__name__)

app.config['SECRET_KEY']= 'anandandkaustubh'
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://admin:Password@petbiotech-site.czufb7vlwyub.ap-south-1.rds.amazonaws.com:3306/ebdb'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {
    'pool_recycle': 1800,  # 30 minutes
    'connect_args': {'connect_timeout': 30}
}
db = SQLAlchemy(app)
app.app_context().push()
login_manager = LoginManager(app)
admin = Admin(app, template_mode='bootstrap4')

@before_first_request
def connect_to_database():
    db.engine.connect()

这些是我的 RDS 安全组: RDS Security Groups

我不知道是否应该设置到我的 RDS 数据库的 EC2 连接?我该如何解决这个问题?请帮帮我。

amazon-web-services flask amazon-elastic-beanstalk amazon-rds
© www.soinside.com 2019 - 2024. All rights reserved.