我想使用基本requestHander在所有请求(GET,POST ..)之前从redis获取全局参数,并且我在龙卷风Web中使用协程作为异步并等待。但是我将aredis用于客户端redis-server,并且baseHandler不支持在 init 方法中使用async,因为我需要在Class super的父类可以获取参数或请求时确认来自redis的检查参数。
这样的代码。
import aredis
redis_client = aredis.StricRedis('redis://xxxx')
class BaseHandler(tornado.web.requestHander):
def check_request(self):
check_one = await redis_client.get(self.request.body['param'])
if not check_one:
self.finish(dict(msg='refused'))
async def get_params(self):
data = await redis_client.get('xxx')
self.data = data
class UserHander(BaseHander):
async def get(self,*args,**kwargs):
data = self.data
return self.finish(data)
答案 0 :(得分:0)
请参见DRF versioning方法。您可以在子类中创建此方法,该方法将在每个请求方法之前调用。
示例:
class BaseHandler(...):
async def prepare(self):
# your code here ...