Как стать автором
Обновить

Комментарии 10

Здорово! К тому же оперативно все это исправили. Осталось только api.stats поправить. Ни в 1.2.6, ни в 1.2.7 он не работает =(
А что с ним такое? В админке же работает, а там такие же запросы в базу идут.
global_stat = stats.GlobalStat.all().get()
print 'Total bytes stored: %d' % global_stat.bytes

— Это 2 строчки из документации гугла, на 1.2.6 они не работают ни на localhost'e, ни на сервере. Точную ошибку не помню, но в ней сообщалось, у global_stat не существует переменной bytes. Завтра потестирую в 1.2.7 на сервере, может быть оно заработало, а на localhost'e ограничение…
Вообще у GlobalStat не может не существовать bytes по определению, ибо:

class BaseStatistic(db.Model):
bytes = db.IntegerProperty()
count = db.IntegerProperty()
timestamp = db.DateTimeProperty()


class GlobalStat(BaseStatistic):


Посему вы либо что-то не то сделали, либо я не знаю, у меня все ок было и на python и на java SDKs.
Да, я видел это в sdk, когда начал копаться… Потом еще пытался сделать прямой запрос в бд через gqlQuery, но безуспешно :)
А база у вас уже была наполнена?
Да. На пустой не пробывал. Однако даже если учесть, что стата пересчитывается каждые 24 часа, даже в этом случае bytes должна быть равна NULL или INT64(0) — в трактовке ProtocoBuffers, ибо модель так устроена, она что-то да вернет, т.к. поле определено.

Я попробую сегодня попозже на пустых базах, если вдруг ошибка — отпишу.
Да нет, у меня тоже полная база была. Я имел в виду, была ли она наполнена до или во время теста :) В общем, буду копать куда зарылся баг, спасибо ;)
Как-то не нахожу я ошибки…
Вот что в итоге получается:
stats.GlobalStat.all() возвращает google.appengine.ext.db.Query
Однако, stats.GlobalStat.all().get() возвращает None…
Собственно, код мало чем отличается от примера в документации:

from google.appengine.ext import webapp
from google.appengine.ext.db import stats

class StatsUserPhoto(webapp.RequestHandler):

def get(self):
global_stat = stats.GlobalStat.all().get()
print global_stat.bytes

Собственно, на локальном сервере статистика не сохраняется.
from google.appengine.ext import db
query = db.GqlQuery(«SELECT * FROM __Stat_Kind__»)
print query.count()
В консоли из админки выдал мне нолик…
А запрос из админки GAE, на их сервере выдал мне нужную информацию.
Да, вы правы, я на локали не тестил. Сейчас посмотрел diff между 1.2.5 и 1.2.7 — код, отвечающий на локали за базы не изменился, посему ответом на запрос будет действительно null, ибо отдавать нечего. Решение — проверять, что это локаль, и писать ошибку/не делать запрос.

У AppEngine вообще на самом деле проблемы с QOS, но вроде ситуация меняется (в 1.2.6 начали отслеживать доступность сервисов datastore и memcache, однако не применяют результаты проверки в коде пока), я запощу issue и завтра в чате скажу разработчикам.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации