2009-08-10 17 views
3

デーモンモードで `Paste 'ウェブサーバを起動すると、ソースファイルのタイムスタンプが更新されたときにリロードする機能が停止するようです。ここでペースト(Python)Webサーバ - 自動ロード問題

は...私はデーモンを起動する方法(私のために)貼り付け]を使用しての主なポイントの一つを破る

cd ${project} && ../bin/paster serve --reload --daemon development.ini; cd ..; 

...です。

誰かがこれを見つけたり、間違っていることを知っていますか?

私が変更しているファイルは、コントローラファイルです。

バージョンは `PasteScript 1.7.3' である

答えて

5

私はリロード機能は、SIGTERMを使用してサーバーを停止し、デーモン化しサーバがそれに不浸透性であるため、二つのオプションは、基本的に互換性がないと信じている - とするのでdaemonは実稼働環境での実行を意図しており、reloadの開発/デバッグ環境では、互換性が大きく損なわれていないと思われます。デーモン化されたサーバーを適切に停止して再起動するようにカスタマイズされたリローダを開発したことは確かですが、既存のものはわかりません。

+1

ありがとうございました - 私が聞く必要があったこと。 :) – Cyrus

+1

--reloadのファイルモニターは毎秒すべてのソースファイルをチェックし、かなりの量のCPU時間を使用することができます。プロダクションでは決して使用しないでください。 mod_wsgiを使用している場合は、アプリケーションをロードする単一の.wsgiスクリプトのタイムスタンプをチェックすることでリロードできます。他のWSGIサーバーには、Spawningのような重要なリロード機能もあります。 – joeforker

+0

*私は2つのオプションが本質的に互換性がないと信じています*彼らは[実際には(https://bitbucket.org/ianb/pastescript/src/510ff7d7627750eb0dbbc0d36fa63c72ffa6b303/paste/script/serve.py?at=default#cl-162 )。 –

3

私は同様の問題があり、問題を回避しました。私は現在、リモートホスト上で動作していますが、まだ開発中ですので、ペーストを再起動する手段が必要でしたが、手作業で手動で行うには時間がかかり、デーモンは機能しませんでした。だから、私はいつも、シェル・ウィンドウをサーバーに開いたままにして、そこに--daemonを付けずにパスタを実行しなければならなかった。一旦私がその日の仕事を終えてシェルを閉じたら、ペースターは死んだ。これは悪いことだ。

"screen"でデーモン化されていないpasterを実行することで、これを回避しました。 あなたのシェルに単に "screen"と入力するだけで、通常はあなたのLinuxに依存して仮想端末が表示され、リモートセッションをログアウトしても実行され続けます。新しい "ウィンドウ"(画面)で--reloadを使用し、デーモンを使わずにペーストを開始し、通常のシェルに戻すことができるようにウィンドウをデタッチします(detach = CTRL-Aを押し、Dを押します)。 「screen -r」と入力して、その画面を再入力することができます。もしあなたがそれを殺したいなら、それを再接続(screen -r)し、スクリーンの中にCTRL-AとタイプしてからKを押してください。

希望します。