我正在将我的GAE应用程序从Python 2.5运行时转换为启用了“ThreadSafe”的Python 2.7运行时。
目前,我的数据访问方法类似于:
@staticmethod
def GetByPermaLinkId(permaLinkId):
result = memcache.get("entry-by-permalink-id:" + permaLinkId)
if result is None:
result = db.get(permaLinkId)
memcache.set("entry-by-permalink-id:" + permaLinkId, result)
return result
所以我想我有两个问题。
我的数据访问方法是否完全荒谬?
我的数据访问方法可以在“ThreadSafe”应用程序中使用吗?
我是App Engine和Python开发的新手,非常感谢反馈。
谢谢!
答案 0 :(得分:1)
缓存经常请求的数据是一个好主意,但是你真的想看一下Python样式指南PEP8 http://www.python.org/dev/peps/pep-0008/
是的,你的方法还可以。 python中的线程安全通常是多个线程访问共享数据的问题。您正在使用memcache来处理共享数据,据我所知,此用例中的内存缓存是线程安全的。您是否会尝试将结果缓存在全局变量中然后会出现竞争条件,在这种情况下您可以使用theading.Lock来避免它。