Комментарии 10
Здорово! К тому же оперативно все это исправили. Осталось только api.stats поправить. Ни в 1.2.6, ни в 1.2.7 он не работает =(
+1
А что с ним такое? В админке же работает, а там такие же запросы в базу идут.
0
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 ограничение…
print 'Total bytes stored: %d' % global_stat.bytes
— Это 2 строчки из документации гугла, на 1.2.6 они не работают ни на localhost'e, ни на сервере. Точную ошибку не помню, но в ней сообщалось, у global_stat не существует переменной bytes. Завтра потестирую в 1.2.7 на сервере, может быть оно заработало, а на localhost'e ограничение…
0
Вообще у GlobalStat не может не существовать bytes по определению, ибо:
class BaseStatistic(db.Model):
bytes = db.IntegerProperty()
count = db.IntegerProperty()
timestamp = db.DateTimeProperty()
…
class GlobalStat(BaseStatistic):
…
Посему вы либо что-то не то сделали, либо я не знаю, у меня все ок было и на python и на java SDKs.
class BaseStatistic(db.Model):
bytes = db.IntegerProperty()
count = db.IntegerProperty()
timestamp = db.DateTimeProperty()
…
class GlobalStat(BaseStatistic):
…
Посему вы либо что-то не то сделали, либо я не знаю, у меня все ок было и на python и на java SDKs.
+1
Да, я видел это в sdk, когда начал копаться… Потом еще пытался сделать прямой запрос в бд через gqlQuery, но безуспешно :)
А база у вас уже была наполнена?
А база у вас уже была наполнена?
0
Да. На пустой не пробывал. Однако даже если учесть, что стата пересчитывается каждые 24 часа, даже в этом случае bytes должна быть равна NULL или INT64(0) — в трактовке ProtocoBuffers, ибо модель так устроена, она что-то да вернет, т.к. поле определено.
Я попробую сегодня попозже на пустых базах, если вдруг ошибка — отпишу.
Я попробую сегодня попозже на пустых базах, если вдруг ошибка — отпишу.
+1
Да нет, у меня тоже полная база была. Я имел в виду, была ли она наполнена до или во время теста :) В общем, буду копать куда зарылся баг, спасибо ;)
+1
Как-то не нахожу я ошибки…
Вот что в итоге получается:
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
Вот что в итоге получается:
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
0
Собственно, на локальном сервере статистика не сохраняется.
from google.appengine.ext import db
query = db.GqlQuery(«SELECT * FROM __Stat_Kind__»)
print query.count()
В консоли из админки выдал мне нолик…
А запрос из админки GAE, на их сервере выдал мне нужную информацию.
from google.appengine.ext import db
query = db.GqlQuery(«SELECT * FROM __Stat_Kind__»)
print query.count()
В консоли из админки выдал мне нолик…
А запрос из админки GAE, на их сервере выдал мне нужную информацию.
+1
Да, вы правы, я на локали не тестил. Сейчас посмотрел diff между 1.2.5 и 1.2.7 — код, отвечающий на локали за базы не изменился, посему ответом на запрос будет действительно null, ибо отдавать нечего. Решение — проверять, что это локаль, и писать ошибку/не делать запрос.
У AppEngine вообще на самом деле проблемы с QOS, но вроде ситуация меняется (в 1.2.6 начали отслеживать доступность сервисов datastore и memcache, однако не применяют результаты проверки в коде пока), я запощу issue и завтра в чате скажу разработчикам.
У AppEngine вообще на самом деле проблемы с QOS, но вроде ситуация меняется (в 1.2.6 начали отслеживать доступность сервисов datastore и memcache, однако не применяют результаты проверки в коде пока), я запощу issue и завтра в чате скажу разработчикам.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
App Engine SDK 1.2.7 — Bugfix Release для Python