我将tornado + sockjs用于websocket,将Django rest框架用于主要应用。 我也使用rest-framework-jwt在Django应用程序上进行身份验证。 现在,我必须确定龙卷风中的用户。我怎么看:
我也想用芹菜。当用户连接到龙卷风时,龙卷风为芹菜创建任务,并且在此任务中将解析jwt。在这种情况下,解决方案不会阻止龙卷风。但是然后如何通过websocket通知用户有关check jwt的信息呢?
答案 0 :(得分:1)
如果要使用SQLAlchemy连接并处理数据库,则可以使用tornado-sqlalchemy在数据库上进行异步查询,并通过WebSocket通知用户,而不会中断龙卷风的事件循环。
@coroutine
def open(self):
with self.make_session() as session:
jtw = request.params.get('authorization')
jwt_valid = yield self.check_jwt_valid(jwt, session)
if not jwt_valid:
self.write('JWT Inválid')
self.close()
@coroutine
def check_jwt_valid(self, jwt, session):
jwt_found = session.query(JWT_QUERY...).first()
return jwt_found
答案 1 :(得分:1)