【发布时间】:2015-08-22 09:25:25
【问题描述】:
这个问题令人费解,因为行为非常不一致。
我正在学习为 Web.py 框架编写应用程序。例如,我有以下结构:
web_app/
|-- main.py
|-- api_calls
| |-- __init__.py
| |-- test1.py
| |-- test2.py
\----\-- common.py
我调用spawn-fcgi 启动我的网络应用程序如下:spawn-fcgi -s /run/webapp.sock -U http -G http /srv/http/web_app/main.py。
现在,由于我仍在学习如何以这种方式编写 Web 应用程序,因此我经常更新代码。我在common.py 中有一些函数,所有“API 文件”都可能调用它们,所以它们是import common。简而言之,我期望工作的所有导入逻辑实际上都工作。
问题是,如果我更改一段代码,无论是 Web 服务器、fcgi 进程还是 Python 本身,检测到此更改并通过执行新代码来响应,这似乎是高度不一致的。例如。如果我在common.py 中进行更改,那么其他调用它的文件仍然引用旧代码。但是,如果我对 test1.py 或 main.py 进行更改,那么这些更改可能会在页面重新加载时立即出现。但是,即使这似乎也不一致 - 有时它不起作用。
我发现touching 所有 .py 文件有时会强制服务器更新,但并非总是如此。
似乎让新代码始终如一地运行的唯一可靠方法是:
- 杀死 spawn-fcgi 程序启动的 Python 进程
- 触摸所有 .py 文件
- 删除所有 .pyc 文件
- 重新启动 spawn-fcgi 守护进程。
我的问题有两个:有人能解释一下 Python、web.py、spawn-fcgi 和 nginx 的组合如何处理代码和页面响应缓存吗?其次,我指定的唯一可靠方法是确保当我刷新网页以查看我的更改时,我对代码所做的任何更改都会被注意到? (现在我手动执行ps 来查找正确的Python 进程,因为我有其他Python 守护进程正在运行,然后使用find 触摸.py 并删除.pyc 文件,然后手动重新进入spawn-我在上面指出的 fcgi 命令 - 当我可能只更改了一行代码时,这是一个乏味的过程......)
【问题讨论】:
标签: python caching nginx fastcgi