- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Django 站点。我正在实时服务器上进行所有更改,只是因为这样更容易。问题是,它似乎时不时地喜欢缓存我正在处理的 *.py 文件之一。有时,如果我经常刷新,它会在旧版本的页面和新版本之间来回切换。
我的设置或多或少类似于 Django 教程中描述的内容:http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/#howto-deployment-modwsgi
我猜它这样做是因为它启动了 WSGI 处理程序的多个实例,并且根据 http 请求发送到的处理程序,我可能会收到不同版本的页面。重新启动apache似乎可以解决问题,但这很烦人。
我真的不太了解 WSGI 或“MiddleWare”或任何请求处理的东西。我来自 PHP 背景,一切正常 :)
无论如何,解决这个问题的好方法是什么?运行 WSGI 处理程序是否会以“守护程序模式”缓解问题?如果是这样,我如何让它在守护程序模式下运行?
最佳答案
以守护程序模式运行该进程将无济于事。这是正在发生的事情:
mod_wsgi 正在生成多个相同的进程来处理您的 Django 站点的传入请求。这些进程中的每一个都是它自己的 Python 解释器,并且可以处理传入的 Web 请求。这些进程是持久的(它们不会针对每个请求启动和拆除),因此单个进程可能会一个接一个地处理数千个请求。 mod_wsgi 能够同时处理多个 Web 请求,因为有多个进程。
每当执行“导入模块”时,每个进程的 Python 解释器都会加载您的模块(您的自定义 Python 文件)。在 django 的上下文中,当由于 Web 请求而需要新的 view.py 时会发生这种情况。加载模块后,它会驻留在内存中,因此您对文件所做的任何更改都不会反射(reflect)在该进程中。随着越来越多的 Web 请求进入,该进程的 Python 解释器将简单地使用已加载到内存中的模块版本。您会看到刷新之间的不一致,因为您发出的每个 Web 请求都可以由不同的进程处理。一些进程可能在您的代码的早期版本中加载了您的 Python 模块,而其他进程可能在以后加载了它们(因为这些进程没有收到 Web 请求)。
简单的解决方案:每当您修改代码时,重新启动 Apache 进程。大多数时候,这就像从 shell “/etc/init.d/apache2 restart” 以 root 身份运行一样简单。我相信简单的重新加载也可以,速度更快,“/etc/init.d/apache2 reload”
守护程序解决方案:如果您在守护程序模式下使用 mod_wsgi,那么您需要做的就是触摸(unix 命令)或修改您的 wsgi 脚本文件。为了澄清 scrompt.com 的帖子,对 Python 源代码的修改不会导致 mod_wsgi 重新加载您的代码。仅当修改了 wsgi 脚本文件时才会重新加载。
最后要注意的一点:为了简单起见,我只谈到 wsgi 使用进程。 wsgi 实际上在每个进程中使用线程池。我觉得这个细节与这个答案无关,但您可以通过阅读 mod_wsgi 了解更多信息。 .
关于Django + WSGI : Refreshing Issues?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1635995/
我正在尝试了解 WSGI 的功能并需要一些帮助。 到目前为止,我知道它是一种服务器和应用程序之间的中间件,用于将不同的应用程序框架(位于服务器端)与应用程序连接,前提是相关框架具有 WSGI 适配器。
正如之前多个问题/答案中所强调的,即this和 this我已将 WSGISocketPrefix 配置为 /etc/httpd/run/wsgi /etc/httpd/run目录具有root:apac
正如之前多个问题/答案中所强调的,即this和 this我已将 WSGISocketPrefix 配置为 /etc/httpd/run/wsgi /etc/httpd/run目录具有root:apac
我刚刚开始使用协同程序,并阅读了有关 gevent 和 greenlets 的内容。为了进行测试,我通过 gevents pywsgi 模块提供了这段代码: from gevent.pywsgi im
我正在尝试了解 WSGI 的工作原理。我知道我可以阅读规范,但我仍然想知道如何创建 spawning应用?一个完整的“ Hello World ”。 有人可以给我举个例子吗?有了一切,文件命名,创建模
我正在构建一个简单的 Web 服务,要求对所有请求进行签名。签名哈希是使用包括请求正文的请求数据生成的。我的愿望是拥有一个验证请求签名的中间件组件,如果签名无效则以错误响应。问题是中间件需要使用 en
为什么会出现此错误? Daemon process called 'dom_server' cannot be accessed by this WSGI application: /home/sta
HTTP格式 HTTP GET请求的格式: ? 1
我读过很多类似 this one 的帖子详细说明如何使用 WSGI 动态返回图像。但是,我看到的所有示例都是以二进制格式打开图像,读取它然后返回该数据(这对我来说很好用)。 我一直在尝试使用内存中的
我正在尝试使用 Apache 为我的网页提供服务,并且想知道 wsgi.py 和 django.wsgi 之间的区别。 两者都有文档,但我不确定应该实现哪一个。我在 Django 1.4、Apache
我正在尝试使用 uwsgi 运行 Django 应用程序。我发现的大多数指令都引用了“--wsgi-file”和“--module”来指定应用程序,但是“uwsgi”没有提到这些选项,当我尝试使用它们
我对以下术语感到非常困惑, 1.wsgi 2.python_wsgi 3.wsgi服务器 4. mod_wsgi 5. python web服务器网关接口(interface)(PEP3333) 这些
我通过如下设置 apache 服务器在 apache2/Mac OS X 上使用 mod_wsgi。 Order allow,deny Allow from all WSGIScri
对于我们的网络服务,我编写了一些逻辑来防止 multipart/form-data POST 大于 4mb。 它归结为以下内容(我已经剥离了所有 WebOb 用法并将其简化为普通的 WSGI 代码):
我有一个 Flask Web 服务器,为使用 Flask-login 的用户进行基本帐户身份验证。如果我自己运行网络服务器,帐户身份验证将按预期工作。使用 Apache 和 mod-wsgi 运行 F
我在 centos 6.9 机器上使用 httpd 和 mod_wsgi 和 httpd 这里是相关文件,我正在尝试在 apache 2.15 版本上部署 django,尝试谷歌但无法解决问题,任何帮
我将在虚拟主机的 ubuntu 服务器上设置一个 django 应用程序。 我已经配置了我的虚拟主机,所以出现了一些问题! 但是由于您在此处看到的一些问题,它仍然给我 500 内部错误: mod_ws
我有一个相当简单、朴素的 Python/WSGI/Pyramid 网络服务器。 它在使用 pyramid.config.Configurator().make_wsgi_app() 构建的服务器上使用
我试图在 Amazon 的 EC2 实例上发布我的网站,但我一直收到 500 错误。我真的不知道为什么。 //日志文件 [Sun Feb 17 23:12:48.066802 2013] mo
我正在尝试在 ubuntu 上的 apache2 上安装 mod_wsgi。所以我安装了 libapache2-mod-wsgi 包,我用 a2enmod 激活了他。 我有一个网站 (language
我是一名优秀的程序员,十分优秀!