標籤:proc ber sso instance zed import server 服務 func
閑來無事,折騰折騰。
老是聽說tonado是個非同步web架構和伺服器,作為架構倒是瞭解到了,但是伺服器一直不太懂。所以決定瞭解一下,既然可以做伺服器,那就把自己的django app部署到這上邊去。
先是*Google*了一下,找到了一篇相關[部落格](https://thinkfaster.co/2015/01/run-django-on-tornado/)。於是乎,將其改造改造,直接搬過來。原作是要用*websocket*這個東東,而我只是要App部署上去就OK。發現需要的代碼是相當精簡的。
import osos.environ.setdefault("DJANGO_SETTINGS_MODULE", "myblog.settings")import django.confimport django.contrib.authimport django.core.handlers.wsgifrom django.core.wsgi import get_wsgi_applicationimport django.dbimport tornado.httpserverimport tornado.ioloopimport tornado.webimport 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())
然後自己用就報錯了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就把他給跑起來了。
使用Tornado作為Django App的伺服器