2015-10-24 90 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