【问题标题】:How to handle tornado user logged out state properly with coroutine如何使用协程正确处理龙卷风用户注销状态
【发布时间】:2015-09-03 13:16:25
【问题描述】:

简单的处理程序:

@gen.coroutine
def get(self):
    current_user = yield self.get_current_user()
    if not current_user:
        self.redirect('/')

    id = current_user['id']
    ...

获取当前用户函数:

@gen.coroutine
def get_current_user(self):
    cookie = self.get_secure_cookie('user')
    if not cookie:
        return

我有一个简单的处理程序。它检查用户是否已登录,如果 current_user 为 None 则重定向。用户未登录时会出现问题:id = current_user['id'] 行仍在评估,因为 get_current_user() 是协程,它会抛出类似TypeError: 'NoneType' object is not subscriptable 的异常

如果我想将 get_current_user() 保留为协程,您将如何正确处理此问题?

【问题讨论】:

    标签: python tornado


    【解决方案1】:

    您不需要在 get_current_user() 中使用协程装饰器并使用 yield 调用它,因为它是一个非常快的函数。

    在这种情况下使用协程切换上下文可能比 get_current_user() 做更多的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-18
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多