【发布时间】:2020-08-07 04:29:33
【问题描述】:
在标准设置中,Django 应用程序由 WSGI 服务器(如 gunicorn 和 mod_wsgi)调用以响应 HTTP 请求,用户级别的入口点是 django 视图。
我可以创建一个自定义入口点来调用 Django 应用程序吗?如果是这样,我如何正确加载 Django 应用程序?
编辑:查看由 startproject 命令创建的 wsgi.py 文件中的入口点,我看到 1)它设置 DJANGO_SETTINGS_MODULE var 并调用 get_wsgi_application,其中 2)调用 django.setup () 和 3) 返回将由 WSGI 服务器调用的 WSGI 应用程序。运行 django 的管理命令时也会发生 1 和 2。 执行 1 和 2 并正确加载 Django 应用程序就足够了吗? 在 3 时,django 的中间件已加载,但它们不兼容,因为我不会进行 HTTP 调用(但 Django 应用程序当然会响应来自其他客户端的 HTTP 请求)。
【问题讨论】:
-
这个问题背后的原因是什么,WSGI是python标准python.org/dev/peps/pep-3333
-
@iklinac 我知道。我需要在不使用 HTTP 请求的情况下调用 Django。例如,Gunicorn 不知道使用哪个 Web 框架来构建它调用的 Web 应用程序。这些应用程序只需要提供一个与 WSGI 兼容的入口点。 WSGI 是一种将 Python Web 应用程序与 Web 服务器集成的 API 规范,允许 Web 应用程序(以及用于实现它的框架)独立于 Web 服务器。该集成由 WSGI 中间件(WSGI 服务器)完成,该中间件接收 Web 服务器转发的 HTTP 请求,进行适当的适配并调用 Web 应用程序。
标签: python django interface integration calling-convention