繁体   English   中英

Flask / Heroku ClearDB无法更新

[英]Flask/Heroku ClearDB not updating

我已经在Heroku上部署了我的Python应用程序,并将其连接到clearDB数据库。 这在本地运行时效果很好,但是在Heroku上运行时,我的INSERT语句似乎未正确提交(有时可以,有时不能)。 它正在穿过金枪鱼。

这是我的MySQL设置:

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上与服务器的连接都是相同的。

是否有效完全是随机的。 提取语句工作得很好,但是插入或更新似乎给我带来了很多问题。 同样,这在本地没有问题的情况下也可以完美运行,但在Heroku上则没有。 (在本地运行时,保存数据似乎需要一点时间,这很好。但是在Heroku上根本不需要花费很多时间,因此我假设它以某种方式跳过了提交)。

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

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

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

Heroku使用两个大师。 因此有时您的凭据可用,有时则不可用,在procfile中,您必须具有

网址:gunicorn --workers = 1 app:app

worker = 1意味着您的数据将集中在一个主数据库上,app = app只是我的切入点,您的可以是您拥有的。

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

主主节点位于Amazon EC2“美国东部”区域的Heroku旁边。 辅助主节点位于Amazon的EC2“美国西部”区域中,以实现高可用性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM