【问题标题】:Reload mod_fcgid without killing Python Service在不杀死 Python 服务的情况下重新加载 mod_fcgid
【发布时间】:2010-04-21 15:47:37
【问题描述】:

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

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

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

【问题讨论】:

    标签: python django mod-fcgid


    【解决方案1】:

    我会这样做:

    ## 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()
    

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

    【讨论】:

    • 谢谢!这似乎也类似于我脑海中的伪想法,但不知道如何实现。
    猜你喜欢
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 2011-07-21
    • 2010-10-31
    相关资源
    最近更新 更多