如何理解Django中的龙卷风响应请求周期

时间:2015-10-24 05:01:30

标签: django request webserver response tornado

我想使用龙卷风和Django创建一个实时的Twitter流媒体应用程序。问题是我无法在这里理解Tornado的角色,我将如何在Tornado Web Server中使用Django的view.py models.py

下面如果Django的请求响应周期,任何人都可以向我解释龙卷风web服务器将如何在这里发挥作用。 enter image description here

几个问题:

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

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

我正在研究这个github项目link

2 个答案:

答案 0 :(得分:1)

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

使用Tornado代码中的Django模型更具挑战性;我上次尝试这样做时的代码是https://gist.github.com/bdarnell/654157(但请注意,这已经过时了,我不知道它是否会再起作用)

答案 1 :(得分:1)

这是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()