gaeutilities' сессия работает над SDK, но не над двигателем приложения Google?

Я столкнулся со странной проблемой: сессия gaeutilitie работала над ГАЕ SDK, но не над фактической платформой Google App Engine. followings - проверка создания и существования сессии, используя Пайтона, соответственно.

Создание сессии:

self.session = sessions.Session()
self.session.delete_item('account')
self.session.delete_item('accountKey')
...
query = db.Query(model.Member)
query = query.filter('account =', account)  # 'account' is the user account
results = query.fetch(limit=1)
if results:  # Account exists
    member = results[0]
    self.session['account'] = account   
    self.session['accountKey'] = member.key()
...

Проверка существования сессии:

self.session = sessions.Session()
if 'accountKey' in self.session:  # Session exists
    account = self.session['account']  # Could this be the problem?
...

Вышеупомянутая программа бежит хорошо на ГАЕ SDK. Но я загрузил программу на Google App Engine, и это не работало. Какова могла бы быть проблема?

1
nl ja de
Проверка регистрации (Никакая идея, что те средства): Истекает: вторник, 03 июля 2001 GMTLast-измененное 6:00:00: пятница, 28 декабря 12 14:04:14 UTCCache-контроля: без магазинов, без тайников, должен - подтверждать, max-age=0Cache-Control: post-check=0, pre-check=0Pragma: без тайников
добавлено автор Sugar Tang, источник
what' s фактическая ошибка? Также попытайтесь проверить len ' results' скорее тогда it' s существование как (я, кажется, вспоминаю) это возвратит пустой список вместо ни одного.
добавлено автор Paul Collingwood, источник

2 ответы

Я нашел, что другой подход решает проблемные gae-сессии использования. Проверить здесь.

0
добавлено

Я не familiair с gaeutilities. Но с self.session = сессии. Сессия() вы создаете новую сессию. Это будет пусто. Так ваша проверка , если 'accountKey' в... не будет работать. Должен быть другой способ получить существующую сессию.

0
добавлено
Кто-то может пролить некоторый свет на это? Спасибо.
добавлено автор Sugar Tang, источник
Я попробовал: если hasattr (сам, ' session') и ' accountKey' в self.session:...-> не работа
добавлено автор Sugar Tang, источник
Насколько я знаю, "self.session = сессии. Сессия ()" или создает новую сессию или получает существующую сессию.
добавлено автор Sugar Tang, источник
никакие конкретные причины использования gaeutilities. I' ll дают webapp2' s сессия попытка. Спасибо.
добавлено автор Sugar Tang, источник
Я попробовал сессии GAE webapp2, но потерпел неудачу. I' ve отредактировал другой вопрос о какой правильный процесс создания и проверки сессий (stackoverflow.com/questions/14078054/…). Вы хотели бы смотреть на него? Спасибо.
добавлено автор Sugar Tang, источник
Я не знаком с сессиями. Мое понимание: когда пользователь авторизуется, создайте сессию; когда конкретная функция призвана, проверьте, существует ли сессия, и в противном случае попросите вход в систему; и наконец, когда пользователь выходит из системы, удаляют сессию. Возможно, можно исправить меня, если я неправ. Кроме того, я don' t вполне понимают документацию webapp2' s сессия. Например, где мы должны назвать класс BaseHandler? Как я использую отправку() и сессия() методы, предоставленные BaseHandler? Понятия там - столь немногие и даже неопределенный.
добавлено автор Sugar Tang, источник
Я предполагаю, что должен провести больше исследования. Один последний вопрос, я продолжал получать сообщение об ошибке: '...' у объекта нет признака ' session' используя self.session ('...') и self.session.get ('...'). Почему?
добавлено автор Sugar Tang, источник
Хорошо, таким образом, вы могли показать то, что находится на встрече с: logging.info (self.session), Но является там причиной использования gaeutilities? Предпочтительный метод для GAE с Питоном 27 использования webapp2, который хорошо зарегистрировал функциональность сессии.
добавлено автор voscausa, источник
Я видел ваш новый вопрос. Вы следовали примеру, используя отправку и webapp2 укладчика? Почему хотели бы Вы удалять сессию? Можно управлять целой жизнью (maxage) печенья. Если вам нравится удалять сессию, можно удалить печенье и пропустить спасти сессию в наконец блок, используя флаг в регистрации запроса.
добавлено автор voscausa, источник
С webapp2 сессиями сессия существует в течение целой жизни приложения. В вашем случае. Можно только использовать приложение, если вы логин и логин будете быть зарегистрированными на сессии. Используя печенье с maxage, сессия закончится через какое-то время. basehandler класс назовет укладчик, потому что этот класс отвергает метод отправки укладчика. Поэтому сделайте точную копию этого класса, чтобы использовать его.
добавлено автор voscausa, источник
Я думаю, что магазин сессии должен быть активирован, прежде чем ваши webapp2 просят, чтобы укладчик был послан. Я попробую к giive пример в вашем новом вопросе.
добавлено автор voscausa, источник