0

mod_wsgi と apache で TurboGears アプリを実行しており、永続化のために Ming でラップされた pymongo を使用しています。私のアプリをフェイルプルーフしてスケーリングするために、私は pymongo ReplicaSetConnectionを介して mongo のレプリカ セットのサポートを使用することに興味がありました。

ただし、上記のリンクで指定されているように、close()すべての pymongoReplicaSetConnectionオブジェクトで完了したときに呼び出す必要があります。そうしないと、一連のゾンビ プロセスが浮かんでいます (wtf pymongo)。この種の動作は Ming ではあまりサポートされていません (実際にはレプリカ セットはまだサポートされていません) が、すべての pymongo 接続を閉じるクリーンアップ関数を書くことができました。

ここで、すべてのアプリ プロセスのプロセス クリーンアップでクリーンアップ関数を実行したいと考えています。これらには 2 つの基本的なエントリ ポイントがあります。mod_wsgi による apache および paster コマンドです。クリーンアップを paster コマンドに追加しても問題ありませんが、wsgi プロセスのクリーンアップ機能を指定する方法はありますか?

そうでない場合、これを正しく設定するための他のアドバイスはありますか?

4

2 に答える 2

0

TurboGears 自体も、config/app_cfg.py 内の base_config.register_hook を使用して登録できるシャットダウンフックを提供します。

プロセスが存在するときはいつでもシャットダウンフックが呼び出されます

于 2012-09-22T18:07:25.057 に答える
0

プロセスが呼び出される前にクラッシュしたり、強制的に終了したりする可能性があるため、コードが呼び出されるという保証はありません。その警告で、この特定の問題に関する mod_wsgi ドキュメントを読んでください。

http://code.google.com/p/modwsgi/wiki/RegisteringCleanupCode

于 2012-08-06T20:08:32.167 に答える