• 使用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就把他给跑起来了。

  • 相关阅读:
    模拟实现链表
    模拟实现内存操作函数
    实现一个简单的进度条
    简单的通讯录(C语言实现)
    sizeof和strlen
    动态联编
    不用第三个变量交换两个变量的值
    内存对齐
    字符串指针和字符数组的区别
    vs中的一些bug解决
  • 原文地址:https://www.cnblogs.com/ExMan/p/9506012.html
Copyright © 2020-2023  润新知