我正在使用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来完全错误的方向?