1
xiaoxinxiaobai 2018-06-05 11:41:06 +08:00 via Android
读一下源码?
|
2
tkmiles 2018-06-05 11:58:15 +08:00
建议可以先了解下 wsgi 协议
|
3
lauix 2018-06-05 12:02:03 +08:00
看下 WSGI 代码,看了下 HTTP 原理你就知道了。
|
4
enenaaa 2018-06-05 12:23:06 +08:00
我没用过 django。但看 nginx 的 fastcgi 配置就可知道,nginx 在向 fastcgi 后端请求时, 会传送文件路径,uri 参数以及系统参数等信息。
fastcgi 进程启动时并不需要项目参数。 |
5
dhq OP |
6
yufpga 2018-06-05 14:12:43 +08:00 2
首先, 在 django 中允许用户自定义命令,然后使用 python manage.py <command> [参数]去执行。当然,runserver,runfcgi, sql ...都是 django 自带的命令。但其实现原理都是一样的, 都是继承了 BaseCommand 类并实现 handler 方法, 实现命令的 py 文件的目录结构也很有特点, 一定是在<app>.management.commands 目录下。因此你可以很容易的找到 runfcgi 命令实现的源码(django.core.management.commands.runfcgi), 同样其他内置的命令实现都可以在 django.core.management.commands 包中找到. 剩下的看代码吧。
|
9
dhq OP @tkmiles 没有,其实我是看过了 cgi, WSGI, fastcgi 这几个东西的区别,只是大概知道他们是基于 web 服务器与应用间的协议,uWSGI 就是一个 web 服务器,我只是不清楚这个协议是怎么把 django 应用给跑起来,感觉理解得好混乱
|
10
flatflax 2018-06-05 15:26:15 +08:00
runfcgi 不是在 1.9 版本后被移除了吗……
|
12
RicardoScofileld 2018-06-06 12:01:07 +08:00
uwsgi 服务器我记得也有一个 UWSGI 协议
|
13
julyclyde 2018-06-06 13:10:35 +08:00
runfcgi 调用了 flup
flup 是一个 wsgi server,内部通过函数调用的方式访问 django 的 wsgi 接口(较新版 django 支持 wsgi ),对外提供 fastcgi server 的通信协议 |
15
dhq OP @RicardoScofileld 对的
|