В приложении appengine python у меня есть счетчики, которые подсчитывают количество favs для фотографии и количество просмотров.Обновление объекта из закрытого счетчика - Python
У меня есть фото и счетчики. Чтобы заказывать фотографии по популярности (# из favs), я должен иметь # favs, хранящийся в моих объектах Photo (Photo.all(). Order ('num_favs')). Поскольку я отслеживаю количество favs в закрытом счетчике, мне интересно, какой самый эффективный способ обновить мои объекты Yahoo с последним номером favs из модели Counter?
Вот аннотация, как мои модели выглядят следующим образом:
class Photo(db.Model):
photo = db.BlobProperty()
favs = db.IntegerProperty() #num of favs
class Counter(db.Model):
#key_name = key to a model that's to be counted - Photo in this case
name = db.StringProperty() #counted entity key
count = db.IntegerProperty() #count
type = db.StringProperty() #type of model to count, "Photo" in this example
#Very unefficient way of updating my Photo entities with the latest count from Counter:
fav_counters = Counter.all().filter('type =', 'Photo')
for fav in fav_counters:
photo_fav = db.get(fav.name) #get the photo for which the fav count is for
photo_fav.favs = fav.count
photo_fav.put()
Я был бы признателен, если бы я мог ответить на: 1) Самый эффективный способ заказать объекты на основе их счетчиков 2) Если логика Я слежу за тем, чтобы упорядочить объекты на основе их счетчиков правильно - какой самый эффективный способ обновить объекты Photo со своими счетчиками?
Спасибо!
+1 Если вы не ожидаете большой популярности трафика, вы, вероятно, можете уйти с первым вариантом, просто сохранив свойство 'num_favorites' на объекте. –
@ Джейсон, я не знаю. Я столкнулся с конфликтом на обычном счетчике, даже контролируя обновления с ограниченным сроком выполнения 1/с. – systempuntoout
@systempuntoout Сколько раз? Ожидается некоторый низкий уровень повторных попыток. И каков размер вашего ведра в очереди задач? –