首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flask/Heroku ClearDB未更新

Flask/Heroku ClearDB未更新
EN

Stack Overflow用户
提问于 2017-12-08 06:56:20
回答 1查看 439关注 0票数 0

我已经在Heroku上部署了我的Python应用程序,并将其连接到一个clearDB数据库。当在本地运行时,这可以很好地工作,但是当在Heroku上运行时,我的INSERT语句似乎没有正确提交(有时提交,有时不提交)。它正在黑角兽中运行。

这是我的MySQL设置:

代码语言:javascript
复制
APP_ROOT = os.path.join(os.path.dirname(__file__), '..')
dotenv_path = os.path.join(APP_ROOT, '.env')
load_dotenv(dotenv_path)

db_user = os.getenv('DB_USER2')
db_pass = os.getenv('DB_PASSWORD2')
db_database = os.getenv('DB_DATABASE2')
db_host = os.getenv('DB_HOST2')

app.config['MYSQL_DATABASE_USER'] = db_user
app.config['MYSQL_DATABASE_PASSWORD'] = db_pass
app.config['MYSQL_DATABASE_DB'] = db_database
app.config['MYSQL_DATABASE_HOST'] = db_host
mysql.init_app(app)

这些变量来自.env文件。但它们也被添加为Heroku上的环境变量。因此,与服务器的连接在本地和Heroku上都是相同的。

无论它是否工作,它都是完全随机的。Fetch语句可以很好地工作,但是插入或更新似乎会给我带来很多问题。同样,这在本地运行得很好,没有问题,但在Heroku上就不行。(在本地运行时,似乎需要一些时间来保存数据,这是可以接受的。但在Heroku上它根本不会花费太多时间,所以我假设它以某种方式跳过了提交)。

日志中也没有错误。它有时似乎会绕过语句,而不是提交。执行硬刷新有时会调出数据,但随后数据会再次消失。大多数情况下,数据根本不会保存。

我在整个应用程序中打开了一个游标,并且在每条SQL语句之前使用conn.ping(True),在获取数据之后使用conn.commit()

如有任何帮助,将不胜感激,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-04-24 15:31:04

Heroku使用两个master。因此,您凭证有时可用,有时不可用,在procfile中,您必须具有

工人网络: gunicorn -=1个app:app

workers=1意味着您的数据将存储在一个主机上,app=app只是我的入口点,您的数据可以是您所拥有的。

下面是来自Heroku双主机,一个数据库连接URL的ClearDB Heroku附加组件在两个不同的亚马逊EC2区域的两个“多主机”数据库服务器上配置您的数据库,以确保绝对的数据可用性。在我们的1.0附加组件中,这意味着您收到了两个数据库连接。现在,使用我们的自定义SQL高可用性路由技术,您可以获得单个连接,该连接在发生故障时自动故障转移到辅助终结点,并在服务恢复和数据库重新同步后切换回主要主节点。

主节点位于亚马逊的EC2 "US-East“区域中的Heroku旁边。辅助主节点位于亚马逊的EC2 "US-West“区域,以实现高可用性。

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

https://stackoverflow.com/questions/47705215

复制
相关文章

相似问题

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