当我触摸 wsgi 脚本时,带有 mod_wsgi 的烧瓶应用程序不会重新加载
Posted
技术标签:
【中文标题】当我触摸 wsgi 脚本时,带有 mod_wsgi 的烧瓶应用程序不会重新加载【英文标题】:Flask application with mod_wsgi not reloading when I touch wsgi script 【发布时间】:2015-03-08 10:42:23 【问题描述】:我正在使用 mod_wsgi 运行带有 apache 的烧瓶应用程序。在对 python 代码进行更改后,我无法重新加载应用程序,因此我通读了mod_wsgi wiki 重新加载源代码。我运行脚本以确认我在守护程序模式下运行,并且我的 .conf VirtualHost 设置如下:
<VirtualHost *:80>
ServerAdmin admin@succor.co
ServerName dev.succor.co
DocumentRoot /var/www/study_buddy_dev/study_buddy
WSGIScriptAlias / /var/www/study_buddy_dev/study_buddy/app.wsgi
ErrorLog $APACHE_LOG_DIR/error.log
LogLevel info
CustomLog $APACHE_LOG_DIR/access.log combined
<Directory /var/www/study_buddy_dev/study_buddy/>
AuthType Basic
AuthName "Authentication Required"
AuthUserFile "/etc/htpasswd/.htpasswd"
Require valid-user
WSGIScriptReloading On
Order deny,allow
Allow from all
</Directory>
WSGIDaemonProcess succor.dev processes=2 threads=15 display-name=%GROUP
WSGIProcessGroup succor.dev
</VirtualHost>
但是当我运行~$ sudo touch app.wsgi
时,我的应用程序没有任何变化,我完全不知道为什么。谁能解释一下我在这里做错了什么?
【问题讨论】:
当您发出touch
时不会发生重新加载,它会在收到请求后发生。您是否尝试在触摸脚本后发送请求?
我尝试在浏览器中访问该应用程序,但在我更新代码之前没有任何变化...该浏览器访问算作请求吗?
我猜这取决于您对应用程序所做的更改。如果您重新启动 Apache,您会发现有什么不同吗?
我在重新启动 Apache 时看不到任何变化。我对 Python 代码和一些 html 代码都进行了更改,但都没有传播。
那么显然问题出在其他地方,对吧?重新启动 Apache 会杀死并重新启动所有进程。如果这没有为您提供更新的应用程序,那么在我看来,您的配置指向您的应用程序的过时版本。
【参考方案1】:
我们已经在上面的cmets中解决了这个问题,但是为了其他人的利益,这里是这个问题的解决方案:
我的猜测是 Apache 运行的 Python 文件不是您正在编辑的 Python 文件,您可能安装了两组文件。但这只是一种猜测,可以解释您所看到的行为,
【讨论】:
以上是关于当我触摸 wsgi 脚本时,带有 mod_wsgi 的烧瓶应用程序不会重新加载的主要内容,如果未能解决你的问题,请参考以下文章
带有mod_wsgi的flask-restless无法连接到MySQL服务器
Django,apache,mod_wsgi - 错误:脚本头过早结束
我该如何解决这个问题? mod_wsgi (pid=3445): 目标 WSGI 脚本 '/www/folder/index.py' 不能作为 Python 模块加载