我想使用龙卷风和Django创建一个实时的Twitter流媒体应用程序。问题是我无法在这里理解Tornado的角色,我将如何在Tornado Web Server中使用Django的view.py
models.py
。
下面如果Django的请求响应周期,任何人都可以向我解释龙卷风web服务器将如何在这里发挥作用。
几个问题:
1- Django中urls.py
文件的作用是什么,因为我们将从Tornado本身路由所有网址。
2-如何连接到models.py
以获取龙卷风应用程序的行。
我正在研究这个github项目link
答案 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()