Django:通过 manage.py 使用服务器与 gunicorn 等其他服务器之间的区别。哪个更好?
Django: Difference between using server through manage.py and other servers like gunicorn etc. Which is better?
我 运行 我的初学者 Django 项目 manage.py runserver
。我看到了改用 gunicorn
的建议。有什么区别?
manage.py runserver 只是一个开发服务器,在任何情况下都不适合生产。一旦准备好部署,您需要使用 Apache、uWSGI、NGINX 或其他服务器来为您的 Django 项目提供服务。
nginx 和 gunicorn 可能是最流行的生产部署配置。在详细说明为什么推荐 gunicorn 而不是 运行server 之前,让我们快速弄清楚 nginx 和 gunicorn 之间的区别,因为它们都声明它们是 web 服务器。
NGINX 应该是您进入 public 的入口点,它是侦听端口 80 (http) 和 443 (https) 的服务器。它的主要目的是 处理 HTTP 请求 ,即应用重定向、HTTP 身份验证(如果需要)、管理 TSL/SSL 证书以及 - 除其他事项外 - 决定您的请求最终去向。例如。 localhost:3000
上可能有一个 node.js 应用程序在 /foo/api
上等待请求,而 gunicorn 在 localhost:8000
上等待为您的应用程序提供服务。这种将传入请求代理到所谓的 upstream
服务(在本例中为 node.js 和 gunicorn)的功能称为 reverse-proxy.
GUNICORN 是一个 将 HTTP 请求转换为 Python 的服务器。 WSGI 是 interfaces/implementations 之一(例如,http headers 的文本部分被转换为 key-value 字典)。
Django 的 built-in 开发网络服务器 (当你 运行 manage.py runserver
时得到的)也提供了该功能,但它针对开发环境(例如,代码更改时重新启动),而 Gunicorn 以生产为目标。
Gunicorn 有许多 Django 的 built-in 服务器所缺乏的功能:
- gunicorn 可以生成多个工作进程以将传入请求并行化到多个 CPU 核心
- gunicorn 有更好的日志记录
- gunicorn 通常针对速度进行了优化
- gunicorn 可以
根据您的设置配置为精细等级
- gunicorn 是
积极设计和维护安全性
除了 gunicorn 之外还有网络服务器,但是 gunicorn(受 ruby 的 unicorn 启发)非常流行并且易于设置,因此不仅是一个很好的起点,而且是一个专业的解决方案被大型项目使用。
我 运行 我的初学者 Django 项目 manage.py runserver
。我看到了改用 gunicorn
的建议。有什么区别?
manage.py runserver 只是一个开发服务器,在任何情况下都不适合生产。一旦准备好部署,您需要使用 Apache、uWSGI、NGINX 或其他服务器来为您的 Django 项目提供服务。
nginx 和 gunicorn 可能是最流行的生产部署配置。在详细说明为什么推荐 gunicorn 而不是 运行server 之前,让我们快速弄清楚 nginx 和 gunicorn 之间的区别,因为它们都声明它们是 web 服务器。
NGINX 应该是您进入 public 的入口点,它是侦听端口 80 (http) 和 443 (https) 的服务器。它的主要目的是 处理 HTTP 请求 ,即应用重定向、HTTP 身份验证(如果需要)、管理 TSL/SSL 证书以及 - 除其他事项外 - 决定您的请求最终去向。例如。 localhost:3000
上可能有一个 node.js 应用程序在 /foo/api
上等待请求,而 gunicorn 在 localhost:8000
上等待为您的应用程序提供服务。这种将传入请求代理到所谓的 upstream
服务(在本例中为 node.js 和 gunicorn)的功能称为 reverse-proxy.
GUNICORN 是一个 将 HTTP 请求转换为 Python 的服务器。 WSGI 是 interfaces/implementations 之一(例如,http headers 的文本部分被转换为 key-value 字典)。
Django 的 built-in 开发网络服务器 (当你 运行 manage.py runserver
时得到的)也提供了该功能,但它针对开发环境(例如,代码更改时重新启动),而 Gunicorn 以生产为目标。
Gunicorn 有许多 Django 的 built-in 服务器所缺乏的功能:
- gunicorn 可以生成多个工作进程以将传入请求并行化到多个 CPU 核心
- gunicorn 有更好的日志记录
- gunicorn 通常针对速度进行了优化
- gunicorn 可以 根据您的设置配置为精细等级
- gunicorn 是 积极设计和维护安全性
除了 gunicorn 之外还有网络服务器,但是 gunicorn(受 ruby 的 unicorn 启发)非常流行并且易于设置,因此不仅是一个很好的起点,而且是一个专业的解决方案被大型项目使用。