У меня есть обработчики, которые обрабатывают запрос с помощью метода get и post, я хочу использовать аутентификацию с моим собственным декоратором, а не с самим декоратором tornado @tornado.web.authenticated. В моем собственном декораторе мне нужно запросить базу данных, чтобы идентифицировать пользователя, но запрос базы данных в торнадо выполняется асинхронно с @gen.coroutine.
Мои коды:
обработчики.ру;
@account.utils.authentication
@gen.coroutine
def get(self, page):
аккаунт/utils.py:
@tornado.gen.coroutine
def authentication(fun):
def test(self,*args, **kwargs ):
print(self)
db = self.application.settings['db']
result = yield db.user.find()
r = yield result.to_list(None)
print(r)
return test
но при доступе к нему произошли ошибки:
Трассировка (последний последний вызов): файл «/Users/moonmoonbird/Documents/kuolie/lib/python2.7/site-packages/tornado/web.py», строка 1443, в _execute result = method(*self.path_args, **self.path_kwargs) TypeError: объект «Будущее» не вызывается
Может ли кто-нибудь встретить это раньше, как правильно написать собственный декоратор для аутентификации с помощью асинхронной операции с базой данных? заранее спасибо~