gpt4 book ai didi

python - 在 Django 中测试数据库可访问性

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

我的问题与this 非常相似问题

我刚刚开始使用 Django,我发现只要有空闲时间并且我的笔记本电脑可用,我就会尝试了解它的工作原理。我发现 Heroku 是一个非常好的测试东西的地方,但如果我在等着接 child 或类似的东西,我不能总是连接到互联网。在开发中,我想创建一个测试来检查数据库是否可访问。如果不是,则故障转移到 SQLite 数据库。

我从大量借鉴自 here 的代码开始:

def pingable(hostname):
try:
return os.system("ping -c 1 " + hostname + " > /dev/null 2>&1") == 0
except:
return False

if (not pingable(DATABASES['default']['HOST'])):
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

我只是在设置 DATABASES 变量后立即执行该代码。但这有一些弱点。最明显的是 AWS(Heroku 使用的)不响应 ping,除非您特别启用它们。 . .老实说,如果没有必要,为什么要降低安全性呢?

因此,为了不重新发明轮子,这让我问了这个问题:有人创建了一种方法来检查 Django 数据库是否可访问吗?

我真的只需要检查 Postgres。 . .但我真的很想找到一个通用的解决方案,所以如果你能指出一个只适用于 Postgres 的解决方案,我将获得一半的分数。

编辑:澄清一下,互联网本身可能可用,但必要的端口可能被防火墙阻止。 . .很难知道会有什么可用

最佳答案

这并不是在 Heroku 和本地开发机器之间管理数据库设置的真正方式。

Heroku 通过环境变量管理所有这些类型的设置,这是 12-factor app 的原则之一。 .他们还制作了一个 Django 库,dj-database-url ,它会读取这些环境变量并自动适本地配置设置。

您应该将其用于您的数据库设置,然后您可以使用本地 sqlite3 数据库的地址设置本地环境变量 DATABASE_URL。然后您的应用程序将自动在开发和生产环境中运行,并将自身配置为自动指向相关数据库。

关于python - 在 Django 中测试数据库可访问性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26068499/

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