【问题标题】:Django: Checks with web-viewDjango:使用网络视图检查
【发布时间】:2019-06-12 09:19:04
【问题描述】:

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

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

调用此视图应该会执行检查,结果(ok 或失败消息)应该是可见的。

我可以自己破解类似的东西。

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

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

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

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

【问题讨论】:

    标签: python django health-monitoring


    【解决方案1】:

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

    但您仍然可以使用 management.call_command 从 python 代码调用此(或任何其他)管理命令 - 您只需要提供一个可写的类似文件的对象来捕获 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

    【讨论】:

      【解决方案2】:

      云平台提供商通常会提供运行状况检查,在特定时间点对您的应用执行 ping 操作,例如:/health

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

      如果他们都通过了,则返回 200。否则云提供商将通知您的管理员。

      当然,您可以使该页面仅对管理员可见,以手动检查或编写您自己的脚本来监督您的应用程序状态。

      【讨论】:

        猜你喜欢
        • 2022-12-03
        • 2019-07-02
        • 1970-01-01
        • 1970-01-01
        • 2012-09-01
        • 1970-01-01
        • 2012-02-09
        • 2015-06-16
        • 1970-01-01
        相关资源
        最近更新 更多