【问题标题】:gaeutilities' session works on SDK, but not on Google app engine?gaeutilities 的会话适用于 SDK,但不适用于 Google 应用引擎?
【发布时间】:2012-12-13 18:44:09
【问题描述】:

我遇到了一个奇怪的问题:gaeutilities 的会话在 GAE SDK 上工作,但在实际的 Google App Engine 平台上却不行。以下分别是使用 Python 的会话创建和存在检查。

会话创建:

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?
...

上述程序在 GAE SDK 上运行正常。但我将程序上传到 Google App Engine,但它不起作用。可能是什么问题?

【问题讨论】:

  • 实际错误是什么?还尝试检查“结果”的 len 而不是它的存在,因为(我似乎记得)它将返回一个空列表而不是没有。
  • 检查日志(不知道这意味着):过期:2001 年 7 月 3 日星期二 06:00:00 GMTLast-Modified:12 年 12 月 28 日星期五 14:04:14 UTCCache-Control:否-store, no-cache, must-revalidate, max-age=0Cache-Control: post-check=0, pre-check=0Pragma: no-cache

标签: google-app-engine session


【解决方案1】:

我不熟悉gaeutilities。但是使用self.session = sessions.Session() 您可以创建一个新会话。这将是空的。所以你的支票if 'accountKey' in ... 将不起作用。必须有其他方法来获取现有会话。

【讨论】:

  • 有人能解释一下吗?谢谢。
  • 我试过了:if hasattr(self, 'session') and 'accountKey' in self.session: ... --> 不工作
  • 据我所知,“self.session = sessions.Session()”要么创建一个新会话,要么获取现有会话。
  • 好的,所以您可以使用以下命令显示会话中的内容:logging.info(self.session) 但是有使用 gaeutilities 的理由吗?使用 Python 27 进行 GAE 的首选方法是使用 webapp2,它具有详细记录的会话功能。
  • 没有使用 gaeutilities 的特殊原因。我会试试 webapp2 的会话。谢谢。
【解决方案2】:

我找到了另一种使用 gae-sessions 解决问题的方法。检查here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    相关资源
    最近更新 更多