【发布时间】:2014-09-26 21:19:28
【问题描述】:
我的问题与this问题非常相似
我刚刚开始使用 Django,我发现自己只要有空闲时间和我的笔记本电脑可用,就试图了解它是如何工作的。我发现 Heroku 是测试事物的好地方,但如果我在等待接孩子或类似的事情,我就不能总是上网。在开发中,我想创建一个测试来检查数据库是否可访问。如果没有,请故障转移到 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 DB 是否可访问?
我真的只需要检查 Postgres 。 . .但我真的很想找到一个通用的解决方案,如果你能指出一个只适用于 Postgres 的解决方案,那么一半功劳。
编辑:澄清一下,互联网本身可能可用,但必要的端口可能被防火墙阻止。 . .很难知道会有什么可用
【问题讨论】:
标签: python django postgresql