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。
我阅读了检查文档: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。