2015-10-24 41 views
1

我想创建一个使用龙卷风和Django的实时Twitter流应用程序。问题是我无法理解Tornado在这里的作用,以及如何在Tornado Web Server中使用Django的view.pymodels.py如何理解Django中的龙卷风响应请求周期

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

几个问题:

1-会是怎样在Django urls.py文件的作用,因为我们会从自身龙卷风路由所有的URL。

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

我期待到这个项目的GitHub link

回答

1

龙卷风大致符合在“网络服务器”,这图的“WSGI”部分,增加了连接到Web服务器龙卷风RequestHandlers另一部分。当你创建你的tornado.web.Application时,你会发送一些URL到Tornado RequestHandlers和一些到Django WSGIContainer(它将使用Django urls.py)。

使用Tornado代码中的Django模型更具挑战性;我上次尝试这样做的代码是https://gist.github.com/bdarnell/654157(但请注意,这是相当古老的,我不知道它是否会继续工作)

+0

你将如何路由一些调用Tornado和一些到Django? – python

+0

我试图运行这个项目[链接](https://github.com/bdarnell/django-tornado-demo/tree/master/testsite),但它运行时出现错误。 'django.core.exceptions.ImproperlyConfigured:' – python

+0

它不能在Django 1.8中工作:/:/ – python

1

这是tornado_main.py存储在一个管理级别。 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() 
+0

你是如何将你的请求从这里路由到Django的?我看不到任何秋季处理程序或它不是必需的,因为您正在使用'manage.py'存储此'tornado_main.py'? – python

+0

这个文件正在工作[link](https://github.com/omgbbqhaxx/django-1.6-tornado-demo/blob/master/torn.py),但是它使用了一个'fallback handler'来传递一些'urls'到Django通过''wsgi' – python

+0

你的代码基于github吗?我可以通过你的整个源代码。如果可能,分享它。谢谢 – python