如何理解Django中的tornado响应请求周期

How to understand tornado response request cycle in Django

我想使用 tornado 和 Django 创建一个实时 Twitter 流应用程序。问题是我在这里无法理解 Tornado 的作用,以及如何在 Tornado Web Server 中使用 Django 的 view.py models.py

下面是Django的请求响应周期,谁能给我解释一下tornado web服务器在这里是如何发挥作用的。

几个问题:

1- urls.py 文件在 Django 中的作用是什么,因为我们将从 Tornado 本身路由所有 url。

2- 我将如何连接到 models.py 以获取我的龙卷风应用程序的行。

我正在研究这个 github 项目 link

Tornado 大致适合此图的 "web server" 和 "wsgi" 部分,并为附加到 Web 服务器的 Tornado RequestHandlers 添加了另一部分。当您创建 tornado.web.Application 时,您会将一些 URL 发送到 Tornado RequestHandlers,将一些 URL 发送到 Django WSGIContainer(后者将使用 Django urls.py)。

使用 Tornado 代码中的 Django 模型更具挑战性;我上次尝试执行此操作时的代码位于 https://gist.github.com/bdarnell/654157(但请注意,这已经很旧了,我不知道它是否还能正常工作)

这是 tornado_main.py 与 manage.py 存储在同一层中...我已经使用 Django 1.8 对其进行了测试...

# coding=utf-8
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_project_dir.settings")

import django
django.setup()

from django.core.urlresolvers import reverse_lazy
from django.contrib.auth.models import User


from tornado.options import options, define, parse_command_line
import logging
import tornado.httpserver
import tornado.ioloop
import tornado.web
import tornado.websocket
import tornado.wsgi


define('port', type=int, default=8004)
# tornado.options.options['log_file_prefix'].set(
#     '/var/www/myapp/logs/tornado_server.log')
tornado.options.parse_command_line()


class SomeHandler(tornado.websocket.WebSocketHandler):
    pass


def main():
    logger = logging.getLogger(__name__)

    tornado_app = tornado.web.Application(
        [
            (r'/some_url/(?P<user_id>[0-9]+)', SomeHandler),
        ],
        debug=True
    )

    logger.info("Tornado server starting...")

    server = tornado.httpserver.HTTPServer(tornado_app)
    server.listen(options.port)

    try:
        tornado.ioloop.IOLoop.instance().start()
    except KeyboardInterrupt:
        tornado.ioloop.IOLoop.instance().stop()
        logger.info("Tornado server has stopped")

if __name__ == '__main__':
    main()