使用Tornado作为Django App的服务器

【使用Tornado作为Django App的服务器】休言女子非英物,夜夜龙泉壁上鸣。这篇文章主要讲述使用Tornado作为Django App的服务器相关的知识,希望能为你提供帮助。
闲来无事,折腾折腾。 
老是听说tonado是个异步web框架和服务器,作为框架倒是了解到了,但是服务器一直不太懂。所以决定了解一下,既然可以做服务器,那就把自己的django app部署到这上边去。

先是*Google*了一下,找到了一篇相关[博客](https://thinkfaster.co/2015/01/run-django-on-tornado/)。于是乎,将其改造改造,直接搬过来。原作是要用*websocket*这个东东,而我只是要App部署上去就OK。发现需要的代码是相当精简的。

  • 1
  • 2
import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myblog.settings") import django.conf import django.contrib.auth import django.core.handlers.wsgi from django.core.wsgi import get_wsgi_application import django.dbimport tornado.httpserver import tornado.ioloop import tornado.web import tornado.wsgifrom tornado.options import options, definedefine(‘port‘, type=int, default=8080)class HelloHandler(tornado.web.RequestHandler): def get(self): self.write(‘Hello from tornado‘)def main(): wsgi_app = tornado.wsgi.WSGIContainer(get_wsgi_application()) tornado_app = tornado.web.Application( [ (r‘/hello-tornado*‘, HelloHandler), (r‘.*‘, tornado.web.FallbackHandler, dict(fallback=wsgi_app)), ]) server = tornado.httpserver.HTTPServer(tornado_app) server.listen(options.port, address=‘192.168.1.59‘) tornado.ioloop.IOLoop.instance().start()if __name__ == ‘__main__‘: main()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
有一些改动,在WSGIContainer中,原作使用的是:
wsgi_app = tornado.wsgi.WSGIContainer( django.core.handlers.wsgi.WSGIHandler())

  • 1
  • 2
然后自己用就报错了The translation infrastructure cannot be initialized before the apps registry is ready. Check that you don’ t make non-lazy gettext calls at import time我勒个去。 
最后发现得用
from django.core.wsgi import get_wsgi_application

  • 1
get_wsgi_application替代。 
哈哈,OK,python tonado_main.py就把他给跑起来了。

    推荐阅读