difference between 'manage.py runserver' and uswgi

python manage.py runserver 启动方式

该命令执行的 django/core/management/commands/runserver.py 中的代码,通过调用链:

1
2
3
4
5
6
7
execute()
-> BaseCommand::execute()
-> handle()
-> run()
-> inner_run()
-> get_handler()
-> django.core.servers.basehttp.get_internal_wsgi_application()

获取一个 WSGI application object。

get_internal_wsgi_application() 默认调用 django.core.wsgi.get_wsgi_application(),该函数首先读取settings.WSGI_APPLICATION参数获取一个wsgi application object对象。

WSGI_APPLICATION参数设置方式参考:

By default, it’s set to .wsgi.application, which points to the application callable in /wsgi.py.

如果该参数没有设置,则调用 django.core.wsgi.get_wsgi_application(),返回django.core.handers.wsgi.WSGIHandler类的实例。

使用uwsgi启动

当使用 django-admin startproject ProjectName 创建新app后,会生成 ProjectName/wsgi.py 文件,该文件默认也使用 django.core.wsgi.get_wsgi_application() 获取一个application object。

refference:
http://uwsgi-docs.readthedocs.io/en/latest/Python.html

因此二者默认情况下是一样的。但是个性化配置方式不同。