当前位置: 首页 > 网络应用技术

什么是Django的RunServer(Django Runtimeerror)

时间:2023-03-06 20:13:20 网络应用技术

  指南:本文的首席执行官Note将向您介绍Django的跑步者是什么。我希望这对每个人都会有所帮助。让我们来看看。

  Django本身带来了Runserver,但是我们仅在测试时使用它,而实际生产部署通常使用UWSGI+NGINX方法。

  因为我们的生产环境通常具有大量并发访问,并且runserver带有django非常不稳定,因此最大连接数量大约是数十个,并且过多的并发连接导致服务崩溃,并且安全性不在术语中。安全。

  NGINX可以支持高并发连接。官方放弃的连接数量约为50,000,在实际生产中,它也约为20,000?40,000。在情况下,该版本已升级)。

  相对比较,Django随附的Runserver仅适合我们在测试过程中使用它。

  老实说,直到到目前为止,我都不欣赏django。这不是我的认知中的微妙设计。这只是功能所积累的“成熟解决方案”。但是,一切的兴起都是时代的选择。您不喜欢它,但需要它。希望有一天,Python可以拥有越来越丰富的成熟解决方案,并且不再因性能和维护而受到批评。(Fit End)

  将其本质带到滴度上,Django的优势很方便。我们的源代码阅读的目的是探索其便利性的本质。阅读源代码的计划对每个地方都不好,而是解释功能的功能。

  django-admin startproject helloworld可以生成django项目。命令行是EXE格式。

  manage.py将参数交给了命令行。

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

  如果设置了重新加载,请在启动之前检查_errors。

  check_errs()是一个关闭,因此在上一篇文章的末尾是(django.setup)()。

  查看最后一个句子设置.installed_apps.grab从设置

  请注意,此设置不是我们项目中的设置。

  这是设置类的懒负载包装包装,直到__getAttr __。然后从设置类的实例中获取值,然后说将其分配给您自己的__ -dict__(我会直接找到它下次我自己,因为__getAttr __优先级)

  为了促进调试,我们直接编写一个run.py。

  在项目下创建一个run.py,以模拟运行服务器命令

  调试抓取设置_MODULE

  回到setup()中的最后一句话

  开始观看apps.populate()

  首先查看本段

  这些应用最终被封装在appconfig中。

  随后,调用了每个AppConfig的import_models()和ready()方法。

  应用程序的加载部分通常是这样的

  为了促进调试,我们重写了最后一句话

  RES的类型是命令django.contrib.staticfiles.management.commands.runserver.com和object at 0x00000101ED5163A0

  重点是第二个句子,让我们跳到run_from_argv()方法,这是几个处理参数。

  用Pycharm指向手柄将进入基类,该基类无法获得正确的方向。实际上,子类已重写此方法。

  这里有两种情况。如果加载重新加载,它将直接执行inner_run(),并且项目首先从其他逻辑开始。

  当Django项目启动时,它实际上将启动两次。如果我们在项目入口(manage.py)中设置一个贴心,您会发现它将打印两次。

  在第一个启动开始时,django_autoreload_env却没有,无法输入启动逻辑。将输入crandt_with_reloader()。

  在这里,您将将django_autoreload_env放置为true,然后重新启动。

  第二次,您可以输入启动逻辑。

  在此创建一个Django主线程以传递innit_run()。

  随后,此线程创建了一个旋转式,通过reloader.run(django_main_thread)询问监护过程。

  让我们看一下django innion_run()的主线程。

  当我们看到WSGI时,Django的启动逻辑已经结束。下一个作业已移交给WSGI服务器

  这相当于我们之前在Fastapi中所说的话,然后将Fastapi的应用程序交给ASGI服务器(ASGI也是Django提出的,这两个基本上是同源的)

  那么WSGI来自哪里?让我们回头回去

  此设置是一个对象,它已从以前的操作中从settings.py配置文件中获取了自己的属性。因此,我们只需要转到settings.py配置文件即可找到。

  让我们找到此get_wsgi_application()。

  它将再次调用setup(),返回WSGIHANDLER类的实例很重要。

  这是WSGIAPP本身。

  load_middleware()是WSGIAPP构建中间件堆栈的唯一方法。

  如果您之前阅读了FastAPI源代码,则应该对中间件堆栈不陌生。

  应用程序入口→中间件堆栈→路由→路由节点→端点

  因此,WSGIAPP已完成此操作,并将服务器传递到应用程序入口的请求中,并且可以通过中间件与该路由分配。

  Django基于Python的免费和开源代码Web框架。它遵循Model-Template-View(MTV)体系结构模式。它由Django Software Foundation(DSF)维护,该基金会是由非营利组织建立的独立组织。

  Django的主要目标是简化复杂,数据库驱动的网站的创建。此框架强调组件的重复性和“可插入”,更少的代码,低耦合,快速开发,不重复其自己的原理。使用Python,甚至用于设置文件和数据模型。Django还提供可选的管理创建,读取,更新和删除接口。该界面是由该省动态生成的,并通过管理模型进行了配置。

  使用Django的一些知名网站包括公共广播服务,Instagram,Mozilla,Washingta,Disqus,Bitbucket和Nextdoor。

  Django成立于2003年秋季。当时,劳伦斯日报报纸互联网程序员Adrian Holovaty和Simon Willison开始使用Python来构建申请。django的开发。它于2005年7月在BSD许可证下公开发布。该框架以吉他手Django Reinhardt.S命名,2008年6月,新成立的Django软件基金会(DSF)将来将维持Django。

  2015年7月,Django Co -Founders和Django Co -Founders and Developers的一些Django Co -Founders和开发商举行了10周年纪念活动,在劳伦斯举行了10周年纪念活动。

  Django的设计概念如下:

  松动-django的目标是使堆栈中的每个元素独立。

  较少编码的无代码,因此可以快速开发。

  不要重复自己(干燥) - 一切都应在一个地方开发,不要一次又一次地重复。

  快速开发-Django的概念是完成可能促进超快速发展的所有事情。

  简单设计-Django严格按照自己的代码维护简单的设计,并且很容易遵循最佳的Web开发实践。

  Django的一些优点如下:

  对象关系映射(ORM)支持-Django在数据模型和数据库引擎之间建立了一个桥梁,并支持大量数据库系统,包括MySQL,Oracle,Postgres,Ett。

  多语言支持-Django通过其构建的国际系统支持多语言网站。因此,您可以开发支持多种语言的网站。

  Framework支持-Django已建立-Ajax,RSS,Cache和其他各种框架的支持。

  GUI - Django为管理活动提供了一个良好的用户界面。

  开发环境-Django具有轻巧的Web服务器,可促进末端到端应用程序的开发和测试。

  Django是Python Web框架。就像大多数现代框架一样,Django支持MVC模式。

  对于Python的基本问题,您可以看到此网页,Web链接的视频教程,希望我的答案能为您提供帮助。

  Apache或Tornado Multi -Process具有编写WSGI协议服务器来调整Django的能力

  Django是一个具有开源代码的Web应用程序框架,由Python编写。MVC软件设计模式,Model M,View V和Controller C. IT最初是为管理Lawrence Publishing Group拥有的一些网站而开发的。,这主要是新闻内容,即CMS(内容管理系统)软件。它于2005年7月在BSD许可下发布。此框架以比利时吉他手吉他手Django Reinhardt命名。

  django中使用的timedRotatingFileHandler记录的日志处理日志处理。预期的效果是每日日志仅存储在文件中。

  但是在实际操作中,遇到了两个棘手的问题。一个是直接与runserver一起运行,runserver随附django,并在滚动时报告错误,提示其他程序占据日志文件。另一个是部署IIS时,它是发现它不会自动Rolover,并且所有日志仍然具有单独的文件。

  第一个问题可以由-noreload参数直接使用。原因也已在[Django]日志函数之前编写。

  第二个问题非常奇怪。可能的原因是设置参数“ where”:“ d”无法实现预期目的。此参数是指根据间隔1天记录日志(默认为1天)。无法触发。

  解决方案是修改参数“ where”:“ Midnight”,以便每天发布新的日志消息,它将触发日志文件的翻转并实现预期效果。

  Django随附Python Manage.py Runserver。如果添加IP地址,则允许访问局域网。该命令不允许访问外部网络(即Internet网络)。

  结论:以上是首席CTO注释为每个人编译的运行服务器相关内容的相关内容。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?