tornado和django加工订单

tornado和django加工订单,django,asynchronous,websocket,tornado,Django,Asynchronous,Websocket,Tornado,我们正在开发一个关于龙卷风的django项目 def main(): tornado.options.parse_command_line() wsgi_app = tornado.wsgi.WSGIContainer( django.core.handlers.wsgi.WSGIHandler()) application = Application([(r'/websocket/', planet_socket.WsDate),

我们正在开发一个关于龙卷风的django项目

def main():
    tornado.options.parse_command_line()
    wsgi_app = tornado.wsgi.WSGIContainer(
        django.core.handlers.wsgi.WSGIHandler())

    application = Application([(r'/websocket/', planet_socket.WsDate),
                               ('.*', FallbackHandler, dict(fallback=wsgi_app)),
                               ],
                              **settings)

    print options.port
    server = tornado.httpserver.HTTPServer(application)
    server.listen(options.port)
    tornado.ioloop.IOLoop.current().start()

if __name__ == '__main__':
    main()
当我们按照上面的方式运行项目时,我们将解决以下问题

  • 当一个请求开始时(例如在屏幕上显示10K记录),所有其他请求都在等待,直到第一个请求完成
  • 在Web套接字上运行的请求正在等待第一个请求的完成
  • 当一个用户启动第一个请求时,所有其他用户都在等待第一个请求的完成
  • 示例项目是。我们怎样才能解决这个问题

    你知道吗


    谢谢…

    这是WSGIContainer的一个限制:

    警告

    WSGI是一个同步接口,而Tornado的并发模型是 基于单线程异步执行。这意味着 使用Tornado的WSGIContainer运行WSGI应用程序的可伸缩性不如 在多线程WSGI服务器(如gunicorn或 uwsgi。仅当组合有好处时才使用WSGIContainer Tornado和WSGI在同一个过程中,超过了减少的 可伸缩性


    你需要让你的Django应用程序足够快,以至于你不介意等待它,或者在两个单独的进程中运行Django和Tornado,通过网络进行通信。就我个人而言,我只会在WSGIContainer中运行Django,作为过渡战略的一部分,将一切都转换为Tornado;如果Django是您长期战略的一部分,那么我建议使用单独的流程。

    我们尝试使用单独的流程,但我们无法在tornado中验证登录Django的用户。所以,当我们分离这些过程时,我们如何进行身份验证,你能举个例子吗?