首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Heroku应用程序可以在本地与Heroku-postgres交互,但在部署到Heroku时则不能。

Heroku应用程序可以在本地与Heroku-postgres交互,但在部署到Heroku时则不能。
EN

Stack Overflow用户
提问于 2021-05-19 20:13:51
回答 1查看 107关注 0票数 0

我正在为一个非常简单的游戏,我主持的Heroku应用程序,它与Heroku-Postgres“业余爱好-开发”级数据库交互。在本地托管时,应用程序可以与数据库进行完美的交互(。但是,当我将它部署到Heroku上时,它通常在尝试与数据库交互后不久就会崩溃。不需要这种交互的页面可以正常工作。具体来说,我在Heroku的日志中收到了以下两个错误:

代码语言:javascript
复制
2021-05-19T19:23:20.943811+00:00 app[web.1]:cur = db.cursor() 
2021-05-19T19:23:20.943812+00:00 app[web.1]: psycopg2.InterfaceError: connection already closed

还有..。

代码语言:javascript
复制
2021-05-19T19:20:35.682211+00:00 app[web.1]:     cur.execute("select * from mock_table;")
2021-05-19T19:20:35.682211+00:00 app[web.1]: psycopg2.OperationalError: SSL error: decryption failed or bad record mac

我对这一原因有一些基于研究的理论,但我不确定:

  • 数据库连接只在Flask应用程序开始时创建一次。
  • 我将用于与数据库交互的Python代码存储在一个单独的模块中。我使用2.(.)进行原始连接在Flask应用程序模块中,但是我将它传递给另一个模块和它的方法来与数据库进行实际交互。
  • 其他原因导致数据库连接结束。

有谁知道我错过了什么吗?我可以提供更多的信息,如果需要,但我不想放太多。

EN

回答 1

Stack Overflow用户

发布于 2021-05-20 14:23:26

根据这篇文章的说法,我收到错误的一个可能原因是一个超时的数据库连接。因此,我所要做的就是将我的数据库调用方法放在一个try(除了块)中,并在发生错误时重新建立连接。举个例子

代码语言:javascript
复制
cur.execute("select * from mock_table;")

可以用..。

代码语言:javascript
复制
try:
    cur.execute("select * from mock_table;")
except:
    #remake connection here
    db.connect(host=host, database=database, user=user, password=password)
    cur.execute("select * from mock_table;")

这不是最优雅的解决方案,它可能有一些缺陷,但它已经成功地解决了问题到目前为止,所以我想我会分享它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67610267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档