Django:如何在启动时禁用数据库状态检查?
Django: How to disable Database status check at startup?
据我所知,如果 settings.py
中设置的任何数据库在应用程序启动时关闭,Django 应用程序将无法启动。有没有办法让 Django "lazyload" 成为初始数据库连接?
我配置了两个数据库,其中一个有点不稳定,有时会宕机几秒钟,但它仅用于应用程序的某些特定用例。正如您想象的那样,我不希望所有应用程序因此而无法启动。有解决办法吗?
我正在使用 Django 1.6.11,我们还使用 Django South 进行数据库迁移(以防它以某种方式相关)。
我不知道它有多安全,但您可以执行以下操作:
在你的 settings.py
开头为空 DATABASES
:
DATABASES = {}
在您的 apps.py
中,利用 ready()
挂钩建立您的数据库连接:
from settings.py import DATABASES
class YourAppConfig(AppConfig):
def ready(self):
DATABASES.update({
Your database connections
})
现在我不能为那个把我的手放在火上,但是 Django will try to reinitialize the database connection 在需要的时候。
我做了一些更多的测试,只有在您使用 de 开发服务器时才会出现问题 python manage.py runserver
。在这种情况下,它会强制与数据库建立连接。
使用实际的 WSGI 服务器不会发生 @Alasdair 告知的情况。
@JohnMoutafis 最后我没有测试你的解决方案,但那是可行的。
据我所知,如果 settings.py
中设置的任何数据库在应用程序启动时关闭,Django 应用程序将无法启动。有没有办法让 Django "lazyload" 成为初始数据库连接?
我配置了两个数据库,其中一个有点不稳定,有时会宕机几秒钟,但它仅用于应用程序的某些特定用例。正如您想象的那样,我不希望所有应用程序因此而无法启动。有解决办法吗?
我正在使用 Django 1.6.11,我们还使用 Django South 进行数据库迁移(以防它以某种方式相关)。
我不知道它有多安全,但您可以执行以下操作:
在你的
settings.py
开头为空DATABASES
:DATABASES = {}
在您的
apps.py
中,利用ready()
挂钩建立您的数据库连接:from settings.py import DATABASES class YourAppConfig(AppConfig): def ready(self): DATABASES.update({ Your database connections })
现在我不能为那个把我的手放在火上,但是 Django will try to reinitialize the database connection 在需要的时候。
我做了一些更多的测试,只有在您使用 de 开发服务器时才会出现问题 python manage.py runserver
。在这种情况下,它会强制与数据库建立连接。
使用实际的 WSGI 服务器不会发生 @Alasdair 告知的情况。
@JohnMoutafis 最后我没有测试你的解决方案,但那是可行的。