我正在尝试在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。
暂无答案!
目前还没有任何答案,快来回答吧!