Django:使用网络视图检查

Django: Checks with web-view

我阅读了检查文档:https://docs.djangoproject.com/en/2.2/topics/checks/

我遗漏了一些东西:我想要一个网络视图,管理员可以在其中查看问题所在。

调用此视图应该执行检查并且结果(正常或失败消息)应该是可见的。

我自己也可以破解这样的东西。

但是我想走一个普通的路,如果已经有这样的路的话。

与单元测试相反,这是关于检查 生产 服务器。

如何用 django 方式做到这一点?

我想到的检查示例:检查第三方服务是否可用(smtp 服务器、存档系统、ERP 系统……)

云平台提供商通常会提供健康检查,在特定时间点对您的应用执行 ping 命令,例如:/health

django-health-check 提供可在访问 /health 时执行的测试。

如果他们都通过了 returns 200。否则云提供商会通知您的管理员。

当然,您可以将该页面设置为只对管理员可见,以便管理员手动检查或编写您自己的脚本来监督您的申请状态。

内置系统检查实际上主要用于开发 - 关键是如果这些测试失败,您的项目很可能根本不会 运行。

但是您仍然可以使用 management.call_command 从 python 代码中调用此(或任何其他)管理命令 - 您只需要提供一个可写的 file-like 对象来捕获 stdout/stderr:

from StringIO import StringIO
from django.core.management import call_command, check

def check_view(request):
    out = StringIO()
    cmd = check.Command(stdout=out, stderr=out)
    call_command(check)
    out.seek(0)
    context = {"results": out.readlines()}
    return render(request, "check.html", context) 

然后只需将其插入您的管理(已记录,因此我不会给出完整的示例)。

注意:wrt/ 将您自己的检查添加到 check 命令,this is fully documented too