重新加载mod_fcgid而不杀死Python服务

时间:2010-04-21 15:47:38

标签: python django mod-fcgid

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

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

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

1 个答案:

答案 0 :(得分: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()

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