3

約 500,000 個のファイル {Ai} を処理するプログラムがあり、ファイルごとに解析用の定義 {Di} をフェッチします。

今のところ、各ファイル {Ai} は専用の celery タスクによって解析され、そのたびに定義ファイル {Di} が再度解析されてオブジェクトが生成されます。このオブジェクトは、ファイル {Ai} (JSON 表現) の解析に使用されます。

定義ファイル (生成されたオブジェクト) {Di(object)} を保存して、タスク全体で使用できるようにしたいと考えています。

だから私はそれを管理するための最良の選択は何だろうかと思います:

  1. Memcahe + Python-memcached、
  2. set(add)/get インターフェイスを使用してオブジェクトを「保存」する長時間実行タスク。

パフォーマンスとメモリ使用量に関して、最良の選択は何ですか?

4

1 に答える 1

1

Memcached を使用すると、はるかに簡単なソリューションのように思えます。タスクは処理用であり、memcached はストレージ用です。なぜタスクをストレージに使用するのでしょうか?

個人的には、memcached よりも Redis を使用することをお勧めします。

別の方法として、ZODB を試すこともできます。これは、Python オブジェクトをネイティブに格納します。アプリケーションがシリアライゼーションのオーバーヘッドに本当に苦しんでいる場合、これが役立つかもしれません。ただし、JSON/memcached に対する実際のワークロードでこれをテストすることを強くお勧めします。

于 2015-08-07T12:15:48.937 に答える