zoukankan      html  css  js  c++  java
  • 使用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.db
    
    import tornado.httpserver
    import tornado.ioloop
    import tornado.web
    import tornado.wsgi
    
    from tornado.options import options, define
    
    define('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就把他给跑起来了。

  • 相关阅读:
    MySQL-InnoDB锁(一)
    Java方法调用机制
    并发编程-锁相关的内存语义
    Java开发工具汇总
    并发编程-底层实现原理
    并发编程-Java内存模型
    JsonTest
    PTA(Basic Level)1034.有理数四则运算
    PTA(Advanced Level)1081.Rational Sum
    PTA(Advanced Level)1008.Elevator
  • 原文地址:https://www.cnblogs.com/ExMan/p/9506012.html
Copyright © 2011-2022 走看看