3

Python/mod_wsgiを実行しているWebファームで高速キャッシュを作成するためのさまざまなシステムを調べています。Memcacheなどはオプションです...しかし、私は疑問に思っていました:

マシン間でデータを共有する必要がないため、各マシンにローカルキャッシュを維持してもらいたい...

PythonまたはWSGIは、サーバーが再起動されるまでデータが保持され、すべてのスレッド/プロセスで使用できるように、ApacheのPythonネイティブ共有データのメカニズムを提供しますか?このようにして、実行中のすべてのアプリケーションインスタンスのメモリスペースに同時実行制御を備えたオブジェクトのキャッシュを保持できますか?

そうでなければ、それは確かに役立つでしょう

ありがとう!

4

3 に答える 3

2

これについては、mod_wsgiドキュメントの「共有とグローバルデータ」セクションで詳しく説明されています。簡単な答えは次のとおりです。いいえ、すべてを1つのプロセスで実行しない限り、それは理想的なソリューションではありません。

memcacheを含む複数のバックエンドをサポートするBeakerミドルウェアを使用する、キャッシュを非常に簡単に実行できることに注意してください。

于 2009-07-11T15:47:36.297 に答える
1

Djangoのスレッドセーフなメモリ内キャッシュバックエンドがあります。こちらをご覧ください。これはcPickleベースであり、Djangoで使用するように設計されていますが、Djangoの他の部分への依存は最小限であり、これらを削除するために簡単にリファクタリングできます。明らかに、各プロセスは、スレッド間で共有される独自のキャッシュを取得します。同じマシン上のすべてのプロセスでキャッシュを共有する場合は、選択したIPCイン​​ターフェイス(ドメインソケットなど)を使用して独自のプロセスでこのキャッシュを使用するmemcachedか、ローカルで使用するか、永続性が必要な場合は再起動します。このようなPythonインターフェイスを備えた東京キャビネットのようなものです。

于 2009-07-11T15:45:03.680 に答える
0

これは古いスレッドだと思いますが、「サーバー全体のdict」の別のオプションは次のとおりです。http: //poshmodule.sourceforge.net/posh/html/posh.html(POSH、Python共有オブジェクト)。免責事項:まだ自分で使用していません。

于 2011-05-21T02:15:52.977 に答える