Skip to main content

为您的应用程序失败时生成静态错误页面(502 等)

项目描述

所以... 很明显,您是一位从不编写错误的出色程序员,也是一位从不让您的应用程序崩溃的出色系统管理员。但是我们其他人呢?

gunicorn有时,运行您的 Django网站的上游应用程序进程(例如) 出现故障,您的前端网络服务器(例如nginx)必须向访问者提供 502 错误页面。

这为您提供了三个选项:

  • 只需使用前端服务器中的任何默认错误页面。他们会非常丑陋和尴尬。

  • 创建与您网站的样式相匹配的自定义错误页面。也许您将它们部署为static文件并将前端服务器指向正确的位置。这开始很好,但是当您更改站点样式时,静态错误页面将不同步。您将为自己创建工作以保持更新。

  • 使用这个django-downpage项目!它提供了一个downpagegenerate可以在运行后立即运行的命令collectstatic。它将从模板构建静态错误页面。它们将始终是最新的,但即使在应用服务器出现故障时也可以作为静态资源使用。

用法:

在开始之前,建议确保已经配置了错误页面handler404 和错误页面。handler500这些视图中的模板可以作为downpage将要使用的模板的基础。

django-downpage与任何其他依赖项一样从 PyPI安装。要快速开始,您可以运行:

$ pip install django-downpage

requirements.txt尽管对于生产用途,使用 a或等效项会更易于管理。

现在编辑您的settings.py以确保downpage被列为已安装的应用程序。顺序不重要:

INSTALLED_APPS = [
    # ...snip...
    "downpage",
    # ...snip...
]

此外,settings.py您还需要定义应该构建的页面列表:

DOWNPAGE_PAGES = [
    ("502.html", "myapp/downpage_502.html"),
    ("503.html", "myapp/downpage_503.html", {"name", "Service Unavailable"}),
    ("504.html", "myapp/downpage_504.html"),
    # ...etc...
]

元组的第一个元素是将构建的目标文件,相对于STATIC_ROOT目录。第二个元素是模板名称,兼容任何可以被内置render(...)快捷方式理解的名称。可选的第三个元素定义了在渲染模板时将提供给模板的额外上下文。

此时您需要创建模板。一个好的起点是为 404 或 500 错误提供的页面。如果您愿意,可以为每个生成的页面使用相同的模板。如果您已将站点设置为使用它们,您也可以使用新型 Jinja2 模板。

现在更新您用于部署的任何过程。您可能已经manage.py collectstatic在此过程中调用。downpagegenerate管理命令最好在此之后立即运行:

# ...snip...
/path/to/virtualenv/bin/python manage.py collectstatic
/path/to/virtualenv/bin/python manage.py downpagegenerate
# ...snip...

然后您需要设置您的前端服务器以了解这些文件。这取决于您使用的服务器。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

django-downpage-1.1.0.tar.gz (4.2 kB 查看哈希)

已上传 source

内置分布

django_downpage-1.1.0-py3-none-any.whl (4.5 kB 查看哈希

已上传 py3