我目前正在将GAE应用程序从启用了“ ThreadSafe”的Python 2.5运行时过渡到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中的线程安全通常是多个线程访问共享数据的问题。据我所知,您正在使用内存缓存来处理共享数据,在这种用例中,内存缓存是线程安全的。相反,如果您尝试将结果缓存在全局变量中,那么就会出现竞争条件,在这种情况下,您可以使用theading.Lock来避免这种情况。

10-07 13:03
查看更多