Я наблюдаю странное поведение с локальным devserver App Engine при фильтрации по запросу.
Я реализовал этот Sharded Counter.
http://code.google.com/appengine/articles/sharding_counters.html
И вот что я вижу:
- Я увеличиваю счетчик, и счетчик успешно создается, и счет обновляется, как и должно.
- Сразу после этого Когда я вызываю get_count (), он возвращает счетчик только что созданного объекта GeneralCounterShard
- Через мгновение, когда я вызываю getCount (), он ничего не возвращает.
После отладки я замечаю, что запрос, который должен соответствовать объекту GeneralCounterShard, для которого я хочу рассчитывать, не совпадает с предоставленным именем.
def get_count(name):
"""Retrieve the value for a given sharded counter.
Parameters: name - The name of the counter """
total = memcache.get(name)
if total is None:
total = 0
for counter in GeneralCounterShard.all().filter('name = ', name):
total += counter.count
memcache.add(name, total, 60)
return total
Таким образом, фильтр в приведенном выше коде ничего не соответствует, пока являются объектами GeneralCounterShard с указанным именем в базе данных.
Я должен сказать, что я новичок в App Engine и Python, но я не понимаю, почему это работает на мгновение, а потом уже нет. Сущности все еще находятся в базе данных.
Может быть, это какая-то ошибка или я что-то упустил?
Спасибо!