我目前正在将我的 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 开发非常陌生,非常感谢您提供反馈。
谢谢!
最佳答案
缓存频繁请求的数据是一个好主意,但是您确实想看看 Python 样式指南 PEP8 http://www.python.org/dev/peps/pep-0008/
是的,你的方法没问题。 python中的线程安全通常是多个线程访问共享数据的问题。您正在使用 memcache 来处理共享数据,据我所知,此用例中的 memcache 是线程安全的。如果您尝试将结果缓存在全局变量中,那么就会出现竞争条件,在这种情况下您可以使用 theading.Lock 来避免它。
关于python - 静态方法和线程安全应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8871334/