python - 静态方法和线程安全应用程序

标签 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”应用程序中使用吗?

我对 App Engine 和 Python 开发非常陌生,非常感谢您提供反馈。

谢谢!

最佳答案

  1. 缓存频繁请求的数据是一个好主意,但是您确实想看看 Python 样式指南 PEP8 http://www.python.org/dev/peps/pep-0008/

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

关于python - 静态方法和线程安全应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8871334/

相关文章:

python - 如何在Python中按字母顺序对字符串中的字母进行排序

python - plotly graph_objects 可以与 Azure 数据资源管理器一起使用吗?

python - 在 Windows 10 中安装后无法加载 'rpy2' 模块

c# - 从单独的线程访问表单的控件

java - GWT GAE Java 应用程序的这种 GWT/RPC 安全方法有多安全?

google-app-engine - 具有 ETA 的 App Engine 任务的触发时间比计划晚得多

python - `scipy.ndimage.zoom()` 的意外行为 `order=0`

c# - 可以在后台线程中运行 GC.Collect 吗?

c++ - 什么是 C++ 应用程序的最佳多线程应用程序调试器

java - 迁移后 Google Cloud Endpoints Framework API Explorer 不起作用