1

我目前正在使用 FCGI 在我学校的网络服务器上运行一个 Django 项目。我确实遵循了建议安装虚拟本地 Python 环境的多个指南,并且效果很好。我遇到的唯一问题是“触摸”我的 fcgi 文件以重新加载源文件是不够的,而是我不得不通过 SSH 终止 python 服务。这是因为使用了 mod_fcgid。

但是,管理员认为我运行自己的本地 python 并不是一个好主意。他认为如果我告诉他要在 root 上安装哪些模块会更好,这确实是一项非常好的服务。

但是这样做,我不能再杀死 python,因为它是在根目录下的(虽然我是不道德的,但我确实尝试过)。管理员的建议是我也应该尝试通过检查时间戳来使 fcgi 脚本自行重新加载。我试图找到有关如何执行此操作的文档,但资金很少,而且由于我是一个绝对的初学者,我不知道什么会起作用。任何人都有在 mod_fcgid 下运行 python/django 的经验或在哪里可以找到相关指南/文档的提示?

4

1 回答 1

0

这就是我要做的:

## top of my .fcgi script
import sys, time
original_modules = sys.modules.copy()

## in a separate thread
old_ctime = os.path.getctime("mymodule.py")
while True:
    time.sleep(10)
    new_ctime = os.path.getctime("mymodule.py")
    if new_ctime > old_ctime:
        sys.modules = original_modules # reset all imports
        import mymodule
        mymodule.dofcgi()

当然这不是完美的(你可能不得不弄乱线程),但它应该让你大致了解如何完全“重新加载”模块。

于 2010-04-21T16:29:20.663 回答