0

私はPythonで書かれた一連のギアマンワーカーを改善しています。それらは基本的なコードで起動されます:

gm_worker = gearman.GearmanWorker(server_address_list)
gm_worker.register_task('pipeline', pipeline_task_gm_worker)
gm_worker.work()

私が探しているのは、ワーカーを起動する別の方法です。これにより、ファイルシステムでワーカーコードの変更がないか監視し、変更があった場合は再起動します。すべてのWebフレームワークは、デバッグを容易にするためにこれをサポートしています。ギアマンの労働者でもこれを行うことは可能ですか?

4

1 に答える 1

0

再起動: Django からの解決策: 最初にウォッチドッグ プロセスが開始され、ワー​​カー プロセスがフォークされます。番犬は、必要に応じて労働者を最終的に殺します。

リロード: メモリ内のデータを失わずにコードをリロードするための最良かつ最も一般的な方法は、Guido (発明者 Python) のコードです。たとえば、コードをリロードし、クラス オブジェクト内の古いコード オブジェクトを新しいコード オブジェクトに置き換えると、インスタンス データを失うことなく、すべてのインスタンスでそれが置き換えられます。ユーザーを助けたリロードに関する私のアドバイスはこちらです。現在、すべてのコードまたはよく知られているコードを安全にリロードできますが、ブラック ボックス (ギアマンのようなサード パーティの未知のコード) をリロードしたくありません。一部のコードが現在デバッガーでトレースされている場合、リロードも機能しません。再起動は透過的です。

于 2012-09-10T21:13:22.723 に答える