Ris*_*wat 18 python django server
我使用manage.py创建了初学者项目,现在在sqllite之后转移到postgres.许多人建议使用gunicorn?有什么不同 ?
shr*_*ing 36
最流行的设置是nginx和gunicorn.所以在我们讨论为什么建议使用gunicorn而不是runserver之前,让我们快速澄清nginx之间的区别 - 因为两者都声称它们是web服务器:)
NGINX应该是你公众的入口点,它是服务器监听端口80(http)和443(https).它的主要原因是处理HTTP请求,即应用重定向,HTTP Auth(如果需要),管理TSL/SSL证书以及 - 除其他外 - 决定您的请求最终到达的位置.例如,可能有一个node.js应用程序localhost:3000
正在等待请求,/foo/api
而gunicorn正在等待localhost:8000
为您的真棒应用程序提供服务.将传入请求代理到所谓的upstream
服务(在本例中为node.js和gunicorn)的这种功能称为反向代理.
GUNICORN是一个将HTTP请求转换为python的服务器.有一些名为WSGI的规范.Django在webserver中的构建也是如此.manage.py runserver
正在瞄准开发(例如,通过自动重新启动更改).Gunicorn瞄准生产.它有很多功能,缺乏服务器内置.例如,它可以产生多个工作进程以将传入请求并行化到多个cpu核心,它具有适当的日志记录,通常针对速度进行了优化,可以根据您的设置配置为非常好的等级,并且非常主动地检查安全问题.
还有其他网络服务器与gunicorn竞争,但gunicorn(最初受到ruby的独角兽的启发)非常受欢迎且易于设置,因此不仅是一个非常好的起点,而且是非常专业的解决方案,非常大的项目使用.
manage.py runserver只是一个开发服务器,在任何情况下都不适合生产.一旦准备好部署,您需要使用Apache,uWSGI,NGINX或其他服务器来为您的django项目提供服务.