gpt4 book ai didi

python - Flask/Heroku ClearDB 未更新

转载 作者:行者123 更新时间:2023-11-29 10:29:23 24 4
gpt4 key购买 nike

我已在 Heroku 上部署了 Python 应用程序,并将其连接到clearDB 数据库。这在本地运行时效果很好,但是当在 Heroku 上运行时,我的 INSERT 语句似乎没有正确提交(有时会正确提交,有时不会)。它通过gunicorn运行。

这是我的 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) ,并在获取 SQL 语句之后使用 conn.commit()数据。

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

最佳答案

Heroku 使用两个 master。所以有时你的凭证可用,有时不可用,在你的 procfile 中,你必须有

网页:gunicorn --workers=1 应用程序:应用程序

workers=1 表示你的数据将在一个 master 上,app=app 只是我的入口点,你的可以是你拥有的。

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

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

关于python - Flask/Heroku ClearDB 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47705215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com