django - 在生产运行时运行 Django 检查
问题描述
我有一个部署在 kubernetes 上的 Django 应用程序。该容器还安装了一个持久卷,其中包含一些操作所需的文件。我想要进行检查,以检查文件是否存在并且在每次 pod 启动时在运行时可访问。Django 文档建议不要在生产环境中运行检查(应用程序在 uwsgi 中运行),并且由于文件仅在生产环境中可用,因此在单元测试时检查将失败。
在生产中执行检查的可接受流程是什么?
解决方案
这是为更好的可见性而发布的社区 wiki 答案。随意扩展它。
您的用例可以从 Kubernetes 的角度来解决。您所要做的就是使用启动探针:
kubelet 使用启动探针来了解容器应用程序何时启动。如果配置了这样的探针,它将禁用活动性和就绪性检查,直到成功,确保这些探针不会干扰应用程序启动。这可用于对启动缓慢的容器进行活性检查,避免它们在启动和运行之前被 kubelet 杀死。
有了它,您可以使用将在容器内执行指定命令的ExecAction 。如果命令以状态码 0 退出,则诊断将被视为成功。简单命令检查的示例可能是检查特定文件是否存在:
exec:
command:
- stat
- /file_directory/file_name.txt
您也可以使用 shell 脚本,但请记住:
命令是要在容器内执行的命令行,命令的工作目录是容器文件系统中的根目录('/')。该命令只是 exec'd,它不在 shell 内运行,因此传统的 shell 指令('|'等)将不起作用。要使用 shell,您需要显式调用该 shell。
推荐阅读
- python-3.x - 仅从 Python 中的 docx 导入一章
- android - Retrofit @QUERY :如果该字段为空,则发送到 URL
- c# - 在 c# 方法中的 for 循环中增加不可达
- powerbi - Power Bi:如果条件具有多种情况,特别是日期 = NULL 或 SYSDATE
- mysql - 如何在“如果不存在”子句中使用准备好的语句的结果?
- flutter - 上传到 Play 商店 64 位警告
- php - 仅当用户不是管理员时,wordpress 中的 php 函数才适用
- android - 使用 android 数据绑定 + Kotlin + ViewModel 的 ListAdapter 点击事件问题
- python-3.x - 具有自定义初始分数的 PageRank
- php - 如何在 php 中提取内部 JSON 变量?