2009-09-10 2 views
1

Я пишу простое приложение с AppEngine, используя Python. После успешной вставки пользователем и переадресации я хотел бы отобразить сообщение с подтверждением флэш-памяти на следующей странице.Как сохранить состояние между запросами в AppEngine (Python)?

Каков наилучший способ сохранить состояние между одним запросом и следующим? Или это невозможно, потому что AppEngine распространяется? Я полагаю, основной вопрос заключается в том, поддерживает ли AppEngine постоянный объект сеанса.

Благодаря

Ханнес

ответ

3

Нет поддержки сессии не входит в саму App Engine, но вы можете добавить свою собственную поддержку сеанса.

GAE Utilities - это одна библиотека, созданная специально для этого; более тяжелая альтернатива - использовать сеансы django через App Engine Patch.

+0

Другим хорошим вариантом является Beaker, который поддерживает сеансы хранилища данных, memcache и зашифрованные сессии cookie. –

+0

Отлично, спасибо! gaeutilities делает именно то, что я ищу! – Hannes

3

Способы надежного сохранения состояния между запросами - это memcache, хранилище данных или через пользователя (файлы cookie или post/get).

Вы также можете использовать кеш времени выполнения, но это очень ненадежно, так как вы не знаете, закончится ли запрос в той же среде выполнения, или время выполнения может отбросить весь кеш, если ему это нравится.

Я действительно не использовал бы кеш времени выполнения, за исключением особых ситуаций, например, я использую его для кэширования сериализации объектов в json, поскольку это довольно медленно, и если кэширование пропало, я могу легко восстановить результат.

+0

А, может, я ответил слишком быстро. Но, конечно же, это относится и к выполнению сессий. –

+0

Право Коэна, самый простой способ - использовать параметр URL или cookie. Просто убедитесь, что вы правильно очистите его для XSS и/или используете сопоставление кодов с сообщениями или что-то еще. Помимо этого, посмотрите на пользовательское решение сеанса, используя memcache или хранилище данных. – RyanW

Смежные вопросы