问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

django怎么启动与关闭(2023年最新整理)

发布网友 发布时间:2024-09-16 00:26

我来回答

1个回答

热心网友 时间:2024-09-16 08:08

导读:很多朋友问到关于django怎么启动与关闭的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

windows安装django之后怎么启动

首先进去软件,然后file--settings--ProjectInterpreter在这右边会有你安装的包。第一次应该是什么都没有的然后--点击最下面的,安装pipsetuptools。安装完成之后,点右上角的“+”号在里面搜索,你想要安装的框架模块然后就可以了。

uwsgi关闭/重启夯死问题

近期使用uwsgi启动django服务,发现在stop/reloawsgi时会出现hangs问题,具体日志表现为:

在测试中发现无论用什么防线先uwsgi发送stop/reload信号,uwsgi都会进入一种假死状态,即不接收请求,也不结束进程。

期初以为uwsgi进程是在处理未完成的web请求。后来发现在没有任何请求时,uwsgi也会进入这种夯死状态。

首先说明问题的原因是因何而起。

出现这种夯死的问题是由于在uwsgi中使用了线程导致。

这里创建了一个最简单的django服务,并用uwsgi来启动。

首先,配置uwsgi为进程模式启动,这里创建了5个进程。

uwsgi配置文件如下:

现在来reloawsgi服务,并查看uwsgi的日志。

结论:在uwsgi使用进程模式时,reloawsgi不会出现夯死的问题。

前面以进程方式启动uwsgi没有出现夯死问题,那么现在就试一下以线程模式启动wusgi。这里启动了5个进程,每个进程中又包含了两个线程。

uwsgi配置文件如下:

reloawsgi服务,并观察日志输出。

结论:在uwsgi中使用线程模式也不会造成reload夯死的问题。

uwsgi的线程不会造成任何问题,那前文所指的线程究竟是什么?

现在uwsgi启动脚本中创建一个线程,在这种情况下尝试reloawsgi并查看日志输出。

随后以线程方式启动uwsgi,并reloawsgi。

结论:在uwsgiapp中使用线程就导致reload夯死。

若场景中非要在uwsgiapp中使用线程,可以通过配置reload-mercy和worker-reload-mercy两个参数避免夯死的问题。

uwsgi配置文件如下:

再次reloawsgi服务,输出日志如下:

这里虽然也会出现NOMERCY问题,但是uwsgi在reload过程中并没有出现夯死的情况。

Django源码阅读(一)项目的生成与启动

诚实的说,直到目前为止,我并不欣赏django。在我的认知它并不是多么精巧的设计。只是由功能堆积起来的"成熟方案"。但每一样东西的崛起都是时代的选择。无论你多么不喜欢,但它被需要。希望有一天,python能有更多更丰富的成熟方案,且不再被诟病性能和可维护性。(屁话结束)

取其精华去其糟粕,django的优点是方便,我们这次源码阅读的目的是探究其方便的本质。计划上本次源码阅读不会精细到每一处,而是大体以功能为单位进行解读。

django-adminstartprojectHelloWorld即可生成django项目,命令行是exe格式的。

manage.py把参数交给命令行解析。

execute_from_command_line()通过命令行参数,创建一个管理类。然后运行他的execute()。

如果设置了reload,将会在启动前先check_errors。

check_errors()是个闭包,所以上文结尾是(django.setup)()。

直接看最后一句settings.INSTALLED_APPS。从settings中抓取app

注意,这个settings还不是我们项目中的settings.py。而是一个对象,位于django\conf\__init__.py

这是个Settings类的懒加载封装类,直到__getattr__取值时才开始初始化。然后从Settings类的实例中取值。且会讲该值赋值到自己的__dict__上(下次会直接在自己身上找到,因为__getattr__优先级较低)

为了方便debug,我们直接写个run.py。不用命令行的方式。

项目下建个run.py,模拟runserver命令

debug抓一下setting_mole

回到setup()中的最后一句apps.populate(settings.INSTALLED_APPS)

开始看apps.populate()

首先看这段

这些App最后都会封装成为AppConfig。且会装载到self.app_configs字典中

随后,分别调用每个appConfig的import_models()和ready()方法。

App的装载部分大体如此

为了方便debug我们改写下最后一句

res的类型是Commanddjango.contrib.staticfiles.management.commands.runserver.Commandobjectat0x00000101ED5163A0

重点是第二句,让我们跳到run_from_argv()方法,这里对参数进行了若干处理。

用pycharm点这里的handle会进入基类的方法,无法得到正确的走向。实际上子类Commond重写了这个方法。

这里分为两种情况,如果是reload重载时,会直接执行inner_run(),而项目启动需要先执行其他逻辑。

django项目启动时,实际上会启动两次,如果我们在项目入口(manage.py)中设置个print,会发现它会打印两次。

第一次启动时,DJANGO_AUTORELOAD_ENV为None,无法进入启动逻辑。会进入restart_with_reloader()。

在这里会将DJANGO_AUTORELOAD_ENV置为True,随后重启。

第二次时,可以进入启动逻辑了。

这里创建了一个django主线程,将inner_run()传入。

随后本线程通过reloader.run(django_main_thread),创建一个轮询守护进程。

我们接下来看django的主线程inner_run()。

当我们看到wsgi时,django负责的启动逻辑,就此结束了。接下来的工作交由wsgi服务器了

这相当于我们之前在fastapi中说到的,将fastapi的app交由asgi服务器。(asgi也是django提出来的,两者本质同源)

那么这个wsgi是从哪来的?让我们来稍微回溯下

这个settings是一个对象,在之前的操作中已经从settings.py配置文件中获得了自身的属性。所以我们只需要去settings.py配置文件中寻找。

我们来寻找这个get_wsgi_application()。

它会再次调用setup(),重要的是,返回一个WSGIHandler类的实例。

这就是wsgiapp本身。

load_middleware()为构建中间件堆栈,这也是wsgiapp获取setting信息的唯一途径。导入settings.py,生成中间件堆栈。

如果看过我之前那篇fastapi源码的,应该对中间件堆栈不陌生。

app入口→中间件堆栈→路由→路由节点→endpoint

所以,wsgiapp就此构建完毕,服务器传入请求至app入口,即可经过中间件到达路由进行分发。

如何把django写成service启动

1、新建一个项目,每个项目目录下面会有一个manage.py文件,启用的命令中用的文件service命令。

2、执行启动服务的命令必须要到项目的根目录,在D:\django\newworldpythonmanage.pyrunserver中间直接打开django黑屏终端,选择service运行即可。

Djago如何启动项目和连接

1:

这三个按钮都是向下的三角,应该是切换项目的

2:在django的项目里链接数据库都是在settings.py文件中配置的

????'default':?{

????????'ENGINE':?'django.db.backends.oracle',

????????'NAME':?'orcl',

????????'USER':?'admin',

????????'PASSWORD':?'summer',

????????'HOST':?'10.1.1.244',

????????'PORT':?'1521',

????},

如何在django中让放定时器启动

版本弧敞岗缎瞢等哥劝工滑2.子程序__启动窗口_将被销毁窗口1._按钮1_被单击()这样写就可以了!这个的意思就是,启动窗口关闭时,,让窗口1执行它按钮1被单击的命令!~如果你认可我的回答,请及时点击【采纳为满意回答】按钮~~手机提问...

结语:以上就是首席CTO笔记为大家整理的关于django怎么启动与关闭的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django怎么启动与关闭的相关内容别忘了在本站进行查找喔。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
瑞安市塘下航达汽车电器配件厂怎么样? 意尔康公司总部地址在哪里 I only wish to face the sea, with spring blossoms是什么意思 征信五级分类是什么?被纳入黑名单有什么影响? 你好,如果诈骗分子利用你隐私视频和盗取你的通讯录好友威胁你要钱的话... ...对方有我的私密照片还有通讯录,要求我给他五千,要不然就发我家人,我... ...现在已经一个月没有性生活了。但是她平时对我很好 是怎么了?_百度... 女人半年没有性生活正常吗 谁能用英语给我写一段游戏里面的征婚启事? 征婚启事用英文怎么说? django程序怎么部署? 怎么在宝塔部署django网站? uWsgi服务器(2)--安装配置 10个完全免费的自学网站,让你不再迷茫 贾汪大蒜属于哪里的特产 11月3日这是儿子的生日了要送什么礼物好呢他七岁 降酸是什么意思? 风云21.5排量100多马力的SUV有意义吗? 手机360云盘是免费的吗 男的可以去美容院吗 美容店洗脸对皮肤好吗 刘运耀急难重症医论与验案选作者简介 360安全卫士精选弹窗怎样关闭? 煮腊八粥可以放薏米吗 韩国有哪些香水品牌 名牌香水都有哪些牌子 问个国六发动机涡轮介入转速的问题,请教各路大神? 钻石蝾螈如何冬季保暖有那些知识点 核桃编程怎么样?价格贵吗? 农村建房中堂宽四米六高三米五大门多大合适 使用卷发棒前的需要准备些什么? lena的卷发棒使用感如何? ...是蟑螂 螨虾 螃蟹 不能吃什么 鸡肉 鸡蛋 牛羊肉 鱼之类的能吃吗... 英文哈喽尅提是什么意? 那只小猫叫什么holle尅提 支付宝新人零花钱需要还吗 一斤是多少克一两是多少克 达到退休年龄的员工,工伤后怎么赔偿 如何上门提亲订婚及结婚仪式之前的必要环节 提亲和订婚的区别 提亲和订婚的顺序是什么 青岛三合信泽物流有限公司怎么样? 小店名字怎么取才吸引人 给小店取名字大全 眼镜带了大概半年600-700的价格。在一次察眼镜中镜柄就掉下来了,刚开始... 儿子高三了,怎样使他进入学习状态中 怎样把家里的iCloud用上,? 洗牙是什么原理?能使牙齿长久变白吗?谢谢! 怎么变白发黄的手机壳 手机壳发黄了怎么变白了手机壳发黄了怎么变白 手机壳硬壳好还是软壳好 请教,怎么把高德地图映射到中控屏上?