我想对数据库中的一个值使用内存中的线程本地缓存,该值在请求/响应周期内不会更改,但会被调用数百次(可能是数千次)。我有限的理解是,使用“全局”/模块变量是实现这种缓存的一种方法。
例如:
#somefile.py
foo = None
def get_foo(request):
global foo
if not foo:
foo = get_foo_from_db(request.blah)
return foo
我想知道在 python 中使用这种类型的“全局”是否是线程安全的,因此我可以放心 get_foo_from_db() 在 django 中每个请求/响应周期都会被调用一次(使用 runserver 或 gunicorn+gevent )。我的理解正确吗?这个东西被调用得足够多,即使使用 memcached 来存储值也会成为一个瓶颈(我正在分析它)。