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

django如何启动服务(2023年最新整理)

发布网友 发布时间:2024-09-30 13:17

我来回答

1个回答

热心网友 时间:2024-10-03 06:05

导读:今天首席CTO笔记来给各位分享关于django如何启动服务的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

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_module

回到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入口,即可经过中间件到达路由进行分发。

windows安装django之后怎么启动

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

如何实现Django启动服务器时一起启动socket监听

您好,很高兴为您解答:

importos

importsys

fromtestSocket.testsimportsocketMethod

if__name__=="__main__":

socketMethod()

os.environ.setdefault("DJANGO_SETTINGS_MODULE","testDjango.settings")

fromdjango.core.managementimportexecute_from_command_line

execute_from_command_line(sys.argv)

defsocketMethod():

print"Runsocket"

s=socket.socket()

host=socket.gethostname()

port=12345

s.bind((host,port))

s.listen(10)

whileTrue:#这里要一直开启监听socket

c,addr=s.accept()

printaddr

c.send("OK")

c.close()

转载,仅供参考。希望以上信息可以帮到您!

django怎么重启服务器

如果你是用runserver来运行程序的话,

你可以直接Ctrl+c,关掉后再运行pythonmanager.pyrunserver重启。

或者你可以打开settings.py中的debug参数,这样如果你修改了python代码,它会自动重启服务。

如果解决了您的问题请采纳!

如果未解决请继续追问!

如何用Nginx部署Django

如果你在windows上开发的django项目。部署的话,需要分三步。

第一步:在linux下下载python用的依赖包,搭建python环境。将windows下的项目复制到linux下,使用django自带服务进行启动。

第二步:下载uwsgi模块并且编写配置文件来替代django自带的服务模块。

第三步:下载nginx包,编译安装。然后创建配置文件,配置nginx启动django项目的信息。然后访问即可。

结语:以上就是首席CTO笔记为大家介绍的关于django如何启动服务的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
现在厨师一个月工资是多少,炒菜和配菜,在什 成都厨房工资多少钱一个月 现在厨师一个月工资是多少,炒菜和配菜,在什么地方的价格,请详细点,谢 ... 华硕电脑上没有触摸板设置华硕笔记本电脑触摸板怎么开启 新买的光碟DVD-R是空白的,我想把他制作成一个系统光碟,谁知道怎么制 ... 请问空白光盘刻录车载DVD后,播放时只有目录放不出来是怎么回事啊?_百 ... 请问将一张DVD-R空白光盘作为数据盘使用能够重复写入或者续写数据吗?谢 ... 我现在有DVD-R盘,怎样刻录?一定需要刻录机吗? 做辣椒酱为什么要放酒 做辣椒酱为啥要放酒 2024年区块链的趋势和方向 美国国际关系理论研究目录 人流越早越好吗 西宁?真是我很想知道。 上海长海医院为什么没有无痛人流手术 美国国际关系理论研究内容简介 美国留学国际关系专业就业前景 qq上把一个好友拉黑删了,后来用了恢复qq好友,可是他却没有恢复? 我把一个qq好友拉黑了,又恢复了好友,但不知道我是不是在黑名单,请问我... ...销售量处于增长状态 中国游客对瑞士钟表销售量的影响 手机QQ把一个好友拉入黑名单删掉了,然后她发验证加我,我这里没有显示... 新买的魅族mx6手机电池 想换手机,魅族MX6怎么样 已经出现赶超瑞士日本的转机? 魅族MX6#是不是直接去售后免费换电池 瑞士销售额排行榜前十的手表品牌,哪些款式值得买? 魅族MX6拆机教程总汇 魅族MX6做工怎么样 瑞士手表真能抵抗智能手表的挑战吗? 沈义人认为1ynm制程LPDDR4X和LPDDR5性能差距大吗? 三星的LPDDR5内存比LPDDR4X有哪些提升? 买一套钻采单位二手房,没有备案,也没有房产证,没办法过户,房主说 我以买的房,但当时没有过户.卖方给了房产证,土地证,签了购房合同,我现... ...想着怎么帮他隐瞒,成了帮凶。他似乎不是很紧张。 白城市人力资源和社会保障局主要职责 梦见男朋友,但他和我不太亲近了,为什么 pychar如何启动django项目(2023年最新整理) 白城市人力资源和社会保障局对企业军转干部退休是否有新待遇 白城市失业保险市级统筹办法(暂行)白城市失业保险市级统筹办法(暂行... 我想问下从福州大学城师大这边要去闽侯的甘蔗镇这么走? 做梦梦见五百万是什么意思 徐守莉相关信息 裴艳玲获得荣誉 红茶有哪些品种哪一种比较好 什么样的企业能不用缴纳增值税? 高一孩子不喜欢学物理,我该怎么培养他对物理的兴趣? 闽南肉粽的做法和配料 到底忧郁症会不会传染给下一代 想问一下,抑郁症遗传给下一代吗 梦见天鹅:昨晚梦见一群天鹅,飞到天上变成了一个美丽的星座,还有一颗从... 闽南小吃肉粽 一台1KW的三相交流电器一小时耗电多少度 ...2500+1.75GHz 内存1GB 显卡NVIDIA GeForce FX5200 显存64MB 可以玩...