Объект сеанса в python - PullRequest
0 голосов
/ 16 января 2020

Поддерживает ли объект Session то же TCP-соединение с клиентом? В приведенном ниже коде запрос от клиента передается обработчику, обработчик создает объект сеансов, почему session["count"] для объекта дает словарь? Затем ответ возвращается клиенту, после другого запроса код выполняется повторно? Чтобы был создан другой объект сеанса? Как сеанс хранит информацию о предыдущем подсчете, если он не возвратил клиенту повар ie?

from appengine_utilities import sessions

class SubmitHandler(webapp.RequestHandler):
  def get(self):

    session = sessions.Session()
    if "count" in session:
        session["count"]=session["count"]+1
    else:
        session["count"]=1

    template_values={'message':"You have clicked:"+str(session["count"])}
    # render the page using the template engine
    path = os.path.join(os.path.dirname(__file__),'index.html')
    self.response.out.write(template.render(path,template_values))

1 Ответ

0 голосов
/ 17 января 2020

Вы задали несколько вопросов, поэтому давайте go один за другим:

  • Сеансы не связаны с TCP-соединениями. Соединение TCP поддерживается, когда и клиент, и сервер договорились об этом, используя поддержку заголовка HTTP. (Цитируется из Пабло Санта-Крус в этом ответе ).
  • Глядя на модуль session.py в строке 1010 в определении __getitem__ Я нашел следующее TODO: It's broke here, but I'm not sure why, it's returning a model object. Может быть что-то в этом роде, я сам не отлаживал.
  • Из appengine_utilities документация сеансы хранятся в Datastore и Memcache или хранятся полностью в виде файлов cookie. Первый вариант также включает в себя отправку токена клиенту для идентификации его в последующих запросах. Выбор того или другого зависит от ваших реальных настроек или настроек по умолчанию, если вы не настроили свои собственные. Настройки по умолчанию определены для использования опции хранилища данных.
  • В отношении повторного выполнения кода вы можете проверить, добавляете ли вы какой-нибудь код регистрации, чтобы подсчитать, сколько раз выполняется функция.

Что-то важное, я заметил, что в этой библиотеке было последнее обновление от 2 января 2016 года, поэтому она не использовалась в течение 4 лет. Будет лучше, если вы перейдете на новейшую библиотеку, например, модуль webapp2 session . Кроме того, Python 2 к этому году (1 января 2020 года) закроется , так что вы можете вместо этого переключиться на python 3.

PD: Я нашел точный код, который вы разместили под этот сайт . В случае, если вы взяли его оттуда, подумайте в следующий раз, чтобы включить ссылку / ссылку на источник.

...