使用gunicorn运行django应用程序有3种方法:
标准gunicorn+ wsgi(参考django doc)
gunicorn project.wsgi:application
使用gunicorn django集成(ref gunicorn doc和django doc):
python manage.py run_gunicorn
使用gunicorn_django命令(ref gunicorn doc)
gunicorn_django [OPTIONS] [SETTINGS_PATH]
Django的文档建议使用1.,它甚至没有被列为Gunicorn文档的选项.
有没有最好的方法来运行带有gunicorn的django应用程序,这些不同的解决方案有哪些可预见的优点/缺点?
看一下gunicorn的代码看起来他们几乎都是这样做的:2.似乎是使用django的内部创建一个wsgi应用程序,而3.使用2.
如果是这样的话,我甚至不明白不仅仅使用"1"的原因是什么.所有的时间,特别是因为wsgi.py自django 1.4 以来文件被自动处理; 如果这是真的可能只是建议文件改进...
此外,与django的gunicorn设置的最佳实践将是伟大的.使用1.,在wsgi文件中设置一些默认值并避免其他设置是否有意义?
gunicorn -c configfile和配置文件将指向django_settings到djangowsgi.py只用1.Ste*_*ano 34
退房后我会说最好的方法是使用gunicorn+wsgi
$ gunicorn project.wsgi:application
Run Code Online (Sandbox Code Playgroud)
它现在都在gunicorn docs中得到证实:如果你运行Django 1.4或更新版本,强烈建议只使用gunicorn命令和上面链接的 django 使用WSGI接口运行你的应用程序.
它还避免添加gunicorn作为已安装的应用程序,这意味着不需要安装gunicorn来测试您的应用程序,这可能是不时有用的.
关于设置
要使用的Django设置文件可以通过ENV变量传递,也可以在wsgi.py文件中自定义.wsgi.py如果我有多个必须从同一项目运行的设置(例如,多个网站),我有时会创建几个文件 - 有关详细信息,请参阅Django Doc.
单线解决方案,不需要Carl的评论中的任何新文件:
DJANGO_SETTINGS_MODULE=project.settings.prod gunicorn project.wsgi:application
听起来像一个更好的方式(虽然我可能最终会在一些shell命令中写它,以便"记住").
Gunicorn设置可以作为传递-c settings_file,但我正在探索其他方法,如果我找到任何方法,将尝试更新此答案.使用环境变量似乎是一个可行的方法,但仅适用于有限的情况
特别是在django和gunicorn之间获得/分享一些设置会很好; gunicorn文件说:
目前,只有Paster应用程序可以访问特定于框架的设置.如果您有为WSGI应用程序提供设置或从Django的settings.py中提取信息的想法,请随时打开一个问题告诉我们.
(更新:没有找到任何更聪明的方法,但毕竟env变量足以满足我最常见的情况).
| 归档时间: |
|
| 查看次数: |
19835 次 |
| 最近记录: |