运用Django进行WEB开发,有三条比较重要的命令值得深入了解一下。

runserver

命令:


python manage.py runserver [addrport]

(manage.py也可改为django-admin)

其中addrport为端口号。常能看到命令:“python manage.py runserver 127.0.0.1:8000”。执行意义:在本地机器上启动一个轻量级的开发网络服务器。默认情况下,该服务器在 IP 地址 127.0.0.1 的 8000 端口上运行。你可以明确地传递一个 IP 地址和端口号。(源于Django官网)所以执行该命令之后,正确情况下就能启动Django项目。

collectstatic

命令:

python manage.py collectstatic

(manage.py也可改为django-admin)

看英文名就可以猜其意,"collect static"收集静态。意义就是:将静态文件收集到STATIC_ROOT。

比如在部署项目时,往往需要将静态文件打包,而本地的静态文件目录往往是不会被直接加载进去的,这就需要打包,而Django部署项目,就需要collectstatic进行打包,而该命令并不是必须执行的。但在部署上线项目时,有时就会发现静态文件CSS、JS文件等未被找到,样式全无的现象。

在Django项目中,当在本地运行的静态文件生效而服务器不生效,这里如果是JS文件,那么可以用开发者工具检查是不是跑404错误,若是,则说明该静态资源未被成功加载。有两种解决尝试:1.把前端的JS文件引入从相对静态路径改为对应网址引入,比如:


/static/element-ui/lib/index.js  ==>
https://unpkg.com/element-ui/lib/index.js

或者 2.在配置文件中记录好静态位置,载入static,比如:


{% load static %}
{% static "element-ui/lib/index.js" %}

同时,根据DJANGO官网提供,findstatic命令:

python manage.py findstatic element-ui/lib/index.js

查询是否打包入该静态文件。

目前新型的开发框架,比如腾讯蓝鲸开发框架,是会在部署上PaaS平台上进行打包,而不会使用本地打包的文件(就是本地的STATIC_ROOT)(一般都能从日志查到对应的collectstatic操作命令结果),此时就可以在本地进行打包测试,找到对应的STATIC_ROOT看文件是否存在或findstatic命令查询,或者部署后预发布环境用开发者工具测试。

本地在runserver运行一般就需访问到需使用的静态文件,Django会默认去查询配置文件的STATICFILES_DIRS、STATIC_URL、STATIC_ROOT 相关。但部署到服务器上或测试平台上时,本地的static目录与其他打包未上传的文件是无法被读到的。所以其中可能就有静态文件的错误出现。

gunicorn

Gunicorn ('Green Unicorn') 是一个 UNIX 下的纯 Python WSGI 服务器(是一个高性能的Python WSGI HTTP Server)。它没有其它依赖,可以使用 ``pip``安装。

安装命令:


python -m pip install gunicorn

检测是否安装成功命令:

gunicorn -h

此时就不会用manage.py runserver的指令,而是启动服务命令(比如):

gunicorn -w 4 -b 127.0.0.1:8000 wsgi:application

其他参数具体意义在本文最末尾处。

把Django项目部署上服务器就会用到此命令,同时gunicorn也只能在Linux环境下使用。用来解析HTTP请求的网关服务。

WSGI HTTP Server:

WSGI(Web Server Gateway Interface),是为了让web和app解耦再把它们连接起来,在Web Server和Web APP之间的一种通用接口开发规范。

pre-fork worker model:

用gunicorn启动时,主线程会调用listen方法绑定指定好的URL和端口,并获取文件描述符,且有fork(复刻)出的多个子线程worker被传递文件描述符做处理,全部的worker会被另一个线程master管控着,master不负责处理请求。这些worker处理完HTTP请求与被Web APP调用后,再整理成HTTP Response,通过TCP返回给客户端。

gunicorn 参数

-c CONFIG    : CONFIG,配置文件的路径,通过配置文件启动;生产环境使用;-b ADDRESS   : ADDRESS,ip加端口,绑定运行的主机;-w INT, --workers INT:用于处理工作进程的数量,为正整数,默认为1;-k STRTING, --worker-class STRTING:要使用的工作模式,默认为sync异步,可以下载eventlet和gevent并指定--threads INT:处理请求的工作线程数,使用指定数量的线程运行每个worker。为正整数,默认为1。--worker-connections INT:最大客户端并发数量,默认情况下这个值为1000。--backlog int:未决连接的最大数量,即等待服务的客户的数量。默认2048个,一般不修改;-p FILE, --pid FILE:设置pid文件的文件名,如果不设置将不会创建pid文件--access-logfile FILE   :要写入的访问日志目录--access-logformat STRING:要写入的访问日志格式--error-logfile FILE, --log-file FILE  :要写入错误日志的文件目录。--log-level LEVEL   :错误日志输出等级。--limit-request-line INT   :HTTP请求头的行数的最大大小,此参数用于限制HTTP请求行的允许大小,默认情况下,这个值为4094。值是0~8190的数字。--limit-request-fields INT   :限制HTTP请求中请求头字段的数量。此字段用于限制请求头字段的数量以防止DDOS攻击,默认情况下,这个值为100,这个值不能超过32768--limit-request-field-size INT  :限制HTTP请求中请求头的大小,默认情况下这个值为8190字节。值是一个整数或者0,当该值为0时,表示将对请求头大小不做限制-t INT, --timeout INT:超过这么多秒后工作将被杀掉,并重新启动。一般设定为30秒;--daemon:是否以守护进程启动,默认false;--chdir:在加载应用程序之前切换目录;--graceful-timeout INT:默认情况下,这个值为30,在超时(从接收到重启信号开始)之后仍然活着的工作将被强行杀死;一般使用默认;--keep-alive INT:在keep-alive连接上等待请求的秒数,默认情况下值为2。一般设定在1~5秒之间。--reload:默认为False。此设置用于开发,每当应用程序发生更改时,都会导致工作重新启动。--spew:打印服务器执行过的每一条语句,默认False。此选择为原子性的,即要么全部打印,要么全部不打印;--check-config   :显示现在的配置,默认值为False,即显示。-e ENV, --env ENV:设置环境变量;

“wsgi:application”即项目根目录下的wsgi.py文件,application为自定义的app命名。

gunicorn详情,内容参考文章(其实例部分可不看):

http://t.csdn.cn/CCfZN

其文章最后的图片部分可助于理解gunicorn步骤流程:

http://t.csdn.cn/k5WGS

gunicorn各类命令参考:

http://www.manongjc.com/detail/12-ohdxvmyasuzxzcu.html

内容参考Django官网:

docs.djangoproject.com

具体其他参数命令可搜索Django官网的DOCUMENTATION(文件)搜索命令词:runserver、collectstatic、gunicorn,或关键词全局搜索即可。

想一起学更多编程与数学知识,欢迎关注我的公众号:一路向东

(一名数学专业的腾讯开发工程师邀请你)

python manage.py runserver/collectstatic gunicorn 三者命令详情相关推荐

  1. python manage.py runserver常驻服务器一直运行

    django在很多项目在WEB上面运行一般都是nginx +uwsgi +django部署 问题nginx +uwsgi +django非常的麻烦,配置上面有时出现很多的异常 项目是可以使用 pyth ...

  2. 运行 python manage.py runserver

    本文参考自: 原文地址 运行 python manage.py runserver 报错: Unhandled exception in thread started by <function ...

  3. python manage.py runserver

    python manage.py runserver Django启动服务器

  4. python manage.py runserver报错

    在运行下面命令之后 python manage.py rserver 192.168.12.188:8001 预期的结果是这样的: 但是却报了这样的错误: 数据库密码不正确 解决: setting中的 ...

  5. 运行python manage.py runserver报错现象、原因和解决办法

    出现这样的情况,是因为,数据库设置出了问题,修改manage.py中的数据库设置

  6. python 运行cmd命令失败怎么办_python manage.py runserver命令在cmd命令框中可以正确执行,但是在pycharm的终端中运行就失败了!...

    源自:2-2 初始Django项目 python manage.py runserver命令在cmd命令框中可以正确执行,但是在pycharm的终端中运行就失败了! (venv) E:\python\ ...

  7. python server.py_python manage.py runserver报错

    执行python manage.py runserver报错: E:\MyPythonProject\HelloWorld>python manage.py runserver Unhandle ...

  8. pycharm终端运行python文件_在PyCharm终端中执行python manage.py..._慕课问答

    原来在DOS环境下需要先执行:  conda activate命令,然后再执行 python manage.py runserver就可以了. 如下: D:\DjangoProject\django_ ...

  9. 完美解决python manage.py makemigrations 报错

    pycharm界面下面的Terminal里执行 1 python manage.py makemigrations app(你所创建的app名字) 2 python manage.py migrate ...

最新文章

  1. 使用js冒泡实现点击空白处关闭弹窗
  2. 设计模式笔记(2)---单件模式(创建型)
  3. 数字图像处理与Python实现笔记之频域滤波
  4. CometOJ-[Contest #10]鱼跃龙门【exgcd】
  5. mysql常见数据库设计_常见数据库设计
  6. ztree 标准得json数据格式_Django+zTree构建组织架构树
  7. 计算机office软件有哪些功能,office2016新功能有哪些?
  8. C语言为内存分配空间(代码段、数据段、bss段、存储类、变量的生命周期)
  9. python 知乎接口_python爬虫入门(3)--利用requests构建知乎API
  10. 简述74HC595功能
  11. 零基础怎么学习平面设计,学习平面设计需要多久?
  12. 矩阵中的entries是什么
  13. 扫地机器人石头爬坡_已经入手吐槽扫地机器人地宝石头t7和t7pro区别是什么?哪个好?内幕分析爆料...
  14. 计算机丢失系统文件如何找回,电脑系统文件丢失怎么办
  15. 程序员才看得明白的面试圣经
  16. CString 用法大全
  17. 先验分布、后验分布、似然估计、贝叶斯估计、最大似然估计
  18. 手机端页面布局之rem
  19. 软件设计能力提升之设计匠艺
  20. Polkit权限提升漏洞(CVE-2021-4034)利用及修复

热门文章

  1. 字符串匹配算法(BF、KMP)
  2. 亚信科技两方案入围工信部“数字技术融合创新解决方案”评选
  3. STM32 keil下载程序后不自动运行程序,必须复位(或重新上电)一下才可以运行
  4. photon Unity RPC 调用流程
  5. 如何实现共享屏幕标注功能?
  6. VideoPlay1.0 UDP通信播放器
  7. ArcGIS 点、线、面要素转换
  8. Python turtle库
  9. 抖音推荐算法工程师提前批
  10. 谷歌支付“无法购买您要买的商品”