如何在龙卷风中使用协程作为全局初始化请求处理程序

问题描述 投票:0回答:1

我想在所有请求(GET,POST ..)之前使用基本requestHander从redis获取全局参数,并且我在龙卷风web中使用coroutine async&await。但我使用aredis到客户端redis-server,并且baseHandler不支持在init方法中使用async,因为我需要在Class超级父类可以获取参数或者请求已经在redis的check params中确认。 像这样的代码。

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)
python async-await tornado
1个回答
0
投票

请参阅RequestHandler.prepare()方法。您可以在子类中创建此方法,并在每个请求方法之前调用它。

例:

class BaseHandler(...):
    async def prepare(self):
       # your code here ...
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.