1

私は現在、FCGI を使用して学校の Web サーバーで 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 に答える