静态方法和ThreadSafe应用程序

时间:2012-01-15 16:36:14

标签: python multithreading google-app-engine thread-safety

我正在将我的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

所以我想我有两个问题。

  1. 我的数据访问方法是否完全荒谬?

  2. 我的数据访问方法可以在“ThreadSafe”应用程序中使用吗?

  3. 我是App Engine和Python开发的新手,非常感谢反馈。

    谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 缓存经常请求的数据是一个好主意,但是你真的想看一下Python样式指南PEP8 http://www.python.org/dev/peps/pep-0008/

  2. 是的,你的方法还可以。 python中的线程安全通常是多个线程访问共享数据的问题。您正在使用memcache来处理共享数据,据我所知,此用例中的内存缓存是线程安全的。您是否会尝试将结果缓存在全局变量中然后会​​出现竞争条件,在这种情况下您可以使用theading.Lock来避免它。