私はGunicornとFlask(Pythonn 3.6)を使用している小さなサービスに取り組んでいます。以下の擬似コードは、おおよその動作を示しています。シリアライズされたfoo
オブジェクトがたくさんあります。できるだけ多くのものをメモリに保持し、それらをLRUベースで削除したいと考えています。Gunicornワーカー間でどのようにキャッシュを共有できますか?
cache = Cache()
@app.route('/')
def foobar():
name = request.args['name']
foo = cache.get(name)
if foo is None:
foo = load_foo(name)
cache.add(foo)
return foo.bar()
問題は、Gunicornワーカー間でこのキャッシュを共有する方法がわかりません。私は限られたメモリで作業しており、重複したオブジェクトを保持したくない。特定のオブジェクトは頻繁に使用され、おそらく決して使用されないため、メモリ内に保持するのが理にかなっていると思います。
これは、別のアプリケーション(両方が同じサーバー上で実行されている)からの要求を取得するだけのものです。このコードを別にしておきたいだけです。私は最初の場所でGunicornを使っても完全に間違った方向に向いていますか?