Итак, я повторяю код, который я делаю для многих GET, - проверяя, был ли ранее сохранен кеш и возвращался ли он, если он доступен.Рефакторинг обработчика запросов Tornado
код Я хотел бы получить рабочие выглядит так:
class Handler(web.RequestHandler):
@gen.coroutine
def get_cache(self):
try:
response = yield gen.Task(get_redis)
except:
logging.log()
if response:
self.finish(response)
raise gen.Return()
@gen.coroutine
@asynchronous
def get(self):
self.get_cache()
response = do_sql_get()
self.set_cache(key, response)
self.finish(response)
Что происходит сейчас в том, что он получает кэш, если там, но продолжает работать в остальной части кода в self.get
. То, что он делает это, имеет смысл для меня, но я не уверен, как правильно его реорганизовать, если он остановится, как только self.finish
вызывается в методе self.get_cache
.