我正在使用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來完全錯誤的方向?