您的位置:首页 > 移动开发

使用Tornado作为Django App的服务器

2015-10-24 11:18 309 查看
闲来无事,折腾折腾。

老是听说tonado是个异步web框架和服务器,作为框架倒是了解到了,但是服务器一直不太懂。所以决定了解一下,既然可以做服务器,那就把自己的django app部署到这上边去。

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


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()


有一些改动,在WSGIContainer中,原作使用的是:

wsgi_app = tornado.wsgi.WSGIContainer(
django.core.handlers.wsgi.WSGIHandler())


然后自己用就报错了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


用get_wsgi_application替代。

哈哈,OK,python tonado_main.py就把他给跑起来了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息