加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 龙卷风中的Django用户

发布时间:2020-12-20 13:34:28 所属栏目:Python 来源:网络整理
导读:我一直在使用下面的代码来获取龙卷风中的 django用户: from django.conf import settingsimport django.contrib.authimport django.utils.importlibimport tornadofrom tornado.options import optionsimport tornado.webimport tornado.ioloopimport sockj
我一直在使用下面的代码来获取龙卷风中的 django用户:

from django.conf import settings
import django.contrib.auth
import django.utils.importlib

import tornado
from tornado.options import options
import tornado.web
import tornado.ioloop
import sockjs.tornado

class RouterConnection(sockjs.tornado.SockJSConnection):

    def get_current_user(self,info):
        engine = django.utils.importlib.import_module(django.conf.settings.SESSION_ENGINE)
        session_key = str(info.get_cookie(django.conf.settings.SESSION_COOKIE_NAME)).split('=')[1]

        class Dummy(object):
            pass

        django_request = Dummy()
        django_request.session = engine.SessionStore(session_key)
        user = django.contrib.auth.get_user(django_request)
        return user


    def on_open(self,info):
        user = self.get_current_user(info=info)

if __name__ == "__main__":
    import logging
    Router = sockjs.tornado.SockJSRouter(RouterConnection)

    app = tornado.web.Application(Router.urls,debug=True,)

    app.listen(settings.TORNADO_PORT)

    tornado.options.parse_command_line()
    tornado.ioloop.IOLoop.instance().start()

我的问题如下:
Django更改了日志配置,我再也看不到龙卷风的任何日志输出了.我怎样才能重新初始化龙卷风伐木?还有其他方法可以将Django与Tornado集成吗?

提前谢谢了.

解决方法

要重置django日志记录,请使用以下命令:

logger = logging.getLogger('')
for handler in logger.handlers:
    logger.removeHandler(handler)
tornado.options.parse_command_line()

使用django.conf模块时,LazySettings类在初始化的django logger中初始化.
我还必须使用初始化的设置类重写代码:

from django.conf import settings
import django.contrib.auth
import django.utils.importlib

import tornado
from tornado.options import options
import tornado.web
import tornado.ioloop
import sockjs.tornado

TORNADO_PORT = settings.TORNADO_PORT

class RouterConnection(sockjs.tornado.SockJSConnection):

    def get_current_user(self,info):
        engine = django.utils.importlib.import_module(settings.SESSION_ENGINE)
        session_key = str(info.get_cookie(settings.SESSION_COOKIE_NAME)).split('=')[1]

        class Dummy(object):
            pass

        django_request = Dummy()
        django_request.session = engine.SessionStore(session_key)
        user = django.contrib.auth.get_user(django_request)
        return user


    def on_open(self,info):
        user = self.get_current_user(info=info)

if __name__ == "__main__":
    import logging
    logger = logging.getLogger('')
    for handler in logger.handlers:
        logger.removeHandler(handler)
    tornado.options.parse_command_line()

    Router = sockjs.tornado.SockJSRouter(RouterConnection)

    app = tornado.web.Application(Router.urls,debug=settings.DEBUG)

    app.listen(settings.TORNADO_PORT)

    tornado.options.parse_command_line()
    tornado.ioloop.IOLoop.instance().start()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读