所以我重复了我为许多 GET 所做的代码——检查响应是否先前被缓存,如果它可用则返回它。
我想要工作的代码如下所示:
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
。