0

我正在寻找添加一个falcon.before钩子,例如:

def check_authenticated(request, response, resource, params):
    print(request.headers)
    request.context.test = 'test'

@falcon.before(check_authenticated)
class testing(object):
    async def on_get(self, request, response):
        print(request.headers)
        print('made it here')

但我一直面临错误:TypeError: object NoneType can't be used in 'await' expression

4

1 回答 1

0

通过响应者的异步签名 ( async def) on_get,我假设您正在使用框架的 ASGI 风格。在这种情况下,不仅您的响应者,而且中间件方法、钩子、接收器、错误处理函数必须是可等待的协程函数。

比较和对比这个“更复杂示例”falcon.before的 WSGI 和 ASGI 版本,其中在框架的同步和异步风格中都应用了一个钩子。

TL;DR 你需要把你的钩子改成async def check_authenticated(...).

于 2021-03-22T18:07:09.407 回答