在heroku上运行的flask服务器在连接到aws rds mysql示例失败时未引发错误

pwuypxnk  于 2021-06-24  发布在  Mysql
关注(0)|答案(0)|浏览(286)

我正在尝试在heroku上部署一个flask应用程序。每当我向服务器发出请求时,我的heroku日志都会给出一个h12超时错误,而没有任何其他信息:

2018-06-25T21:25:58.755278+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/" host=live-event-market-api.herokuapp.com request_id=a1638941-9d56-4364-b9e6-ba46b6fa875f fwd="73.186.40.243" dyno=web.1 connect=1ms service=30000ms status=503 bytes=0 protocol=https

经过大量的搜索,我意识到这个问题与连接到我的数据库有关:当我注解掉连接到数据库的代码时,对heroku上的应用程序的请求工作正常。


# create all db tables

@app.before_first_request
def create_tables():
    from database import init_db
    init_db()
    #^^^get rid of all this, and the app works fine on Heroku

在看了这篇文章之后,我决定我需要证明heroku。我已经完成了步骤,似乎我应该成功地连接。但是,如果没有任何类型的错误消息(如另一个so海报报告的错误消息),则很难准确地调试它。
有人知道我怎样才能从heroku那里得到更好的堆栈跟踪吗?我不知道错误是什么,除非我的代码告诉我——我只知道,由于某种原因,我的heroku dyno无法在30秒内连接到我的amazon rds mysql数据库。
另外请注意,我的应用程序在本地计算机上运行得非常好。只有当我把它推给希罗库时,我才开始有麻烦。
编辑:请注意我是如何尝试连接到数据库的:

engine = create_engine(os.environ['DB_URI'],connect_args={'ssl':{'ca':'amazon-rds-ca-cert.pem','cert':'amazon-rds-ca-cert.pem'}})
db_session = scoped_session(sessionmaker(autocommit=False,
                                         autoflush=False,
                                         bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()

def init_db():
    from models import UserModel, RevokedTokenModel, PromoterModel, EventInfo, Event
    Base.metadata.create_all(bind=engine)

其中db\u uri是一个配置变量,具有有效的aws示例url。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题