gpt4 book ai didi

python - Django:禁用生产中的初始系统检查?

转载 作者:太空宇宙 更新时间:2023-11-04 04:58:14 25 4
gpt4 key购买 nike

我已经搜索了文档并正在寻找一个 Django 设置,它可以在生产中禁用系统检查(而不仅仅是使它们静音)。我有一个包含 20,000 多个模型的项目,这些模型是自动生成的以创建 RESTful 端点。这些系统检查需要相当长的时间:

https://docs.djangoproject.com/en/1.11/ref/checks/#models

让系统检查开发是必要的,即使它会导致 manage.py 启动 20-30 分钟。但是,每当我将新版本发布到生产环境时,对生产节点的第一个 HTTP 请求也需要 20-30 分钟才能响应!我显然想避免这种情况,因为在初始请求之后,该网站快如闪电。

虽然下面评论中的答案引用了一个让 runserver 更快启动的解决方案,但我正在寻找生产解决方案,而不是我们的开发环境。

我四处寻找像 DISABLED_SYSTEM_CHECKS 这样的设置,但只遇到了 SILENCED_SYSTEM_CHECKS ( see here ),但这似乎只是让输出静音而不是没有运行需要时间的检查。这样的动物存在吗?我在生产环境中运行 mod_wsgi。我已经看到针对单个命令的 requires_system_checks,但我正在寻找一个项目范围的解决方案。非常感谢。

最佳答案

您可以创建一个 DISABLE_CHECKS 设置并强制跳过检查函数本身的检查。我注意到,即使您在 settings.py 中设置了 SILENCED_SYSTEM_CHECKS,某些 manage.py 命令仍会运行检查(例如迁移)。这是我使用的:

import logging

from django.conf import settings
from django.core.checks import Error
from django.db import connections
from django.core.cache import caches

def check_cache_connectivity(app_configs, **kwargs):
"""
Check cache
:param app_configs:
:param kwargs:
:return:
"""
errors = []

# Short circuit here, checks still ran by manage.py cmds regardless of SILENCED_SYSTEM_CHECKS
if settings.DISABLE_CHECKS:
return errors

cache_settings = settings.CACHES.keys()
for cur_cache in cache_settings:
try:
key = 'check_cache_connectivity_{}'.format(cur_cache)
caches[cur_cache].set(key, 'connectivity_ok', 30)
value = caches[cur_cache].get(key)
print("Cache '{}' connection ok, key '{}', value '{}'".format(cur_cache, key, value))
except Exception as e:
msg = "ERROR: Cache {} looks to be down. {}".format(cur_cache, e)
print(msg)
logging.exception(msg)
errors.append(
Error(
msg,
hint="Unable to connect to cache {}, set as {}. {}"
"".format(cur_cache, settings.CACHES[cur_cache], e),
obj='CACHES.{}'.format(cur_cache),
id='content_services.E002',
)
)
return errors

我在我的构建环境中使用它,我希望忽略大部分(如果不是全部)自定义检查。希望对您有所帮助!

关于python - Django:禁用生产中的初始系统检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46513900/

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