Статические методы и приложения ThreadSafe - PullRequest
1 голос
/ 15 января 2012

В настоящее время я перевожу свое приложение GAE из среды выполнения Python 2.5 в среду Python 2.7 с включенной функцией ThreadSafe.

В настоящее время мои методы доступа к данным выглядят примерно так:

@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 Ответ

1 голос
/ 16 января 2012
  1. Хорошая идея - кэширование часто запрашиваемых данных, однако вы действительно хотите взглянуть на Руководство по стилю Python PEP8 http://www.python.org/dev/peps/pep-0008/

  2. Да, ваш метод в порядке,Потокобезопасность в python - это обычно проблема доступа нескольких потоков к общим данным.Вы используете memcache для обработки общих данных, и насколько я знаю, в этом случае использование memcache является поточно-ориентированным.Если бы вы вместо этого попытались кэшировать свой результат в глобальной переменной, тогда возникло бы состояние гонки, и в этом случае вы могли бы использовать theading.Lock, чтобы избежать этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...