龙卷风中的Django用户



我一直在使用下面的代码来获取龙卷风中的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与龙卷风?

提前感谢。

重置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()

使用tornado.wsgi.WSGIContainer来包装Django。

相关内容

  • 没有找到相关文章

最新更新