摘要:之前一直很想知道在上是如何運行其他應用的例如利用可以作為運行的服務器。需要注意的是由于的并發模型是建立在單線程異步執行的基礎上的因此它運行個應用比使用多線程的服務器要弱很多。當然這種方式在和在相同進程時有用否則將減少可擴展性。
之前一直很想知道,在Tornado上是如何運行其他WSGI應用的,例如利用Twisted,可以作為Flask、Bottle、Django運行的服務器。近日在查看tornado的官方文檔時,總算找到了對應的方式了。
在Tornado中,我們可以通過wsgi模塊下的WSGIContainer類來實現這樣的需求。這里,我們使用Bottle作為例子,來查看這個過程。
from bottle import Bottle app = Bottle() @app.route("/"): def index(): return "Hello World"
現在,我們編寫了1個簡單的訪問根URL時輸出1個Hello World的簡單應用了。
接下來,我們讓這個Bottle的應用在tornado上運行,我們引入tornado庫:
import tornado
然后將要托管的應用以參數的形式傳入到WSGIContainer類中:
container = tornado.wsgi.WSGIContainer(app)
接下來,我們定義1個HTTP服務器,用于提供服務:
http_server = tornado.httpserver.HTTPServer(container)
緊接著,我們定義這個服務器監聽的端口:
http_server.listen(8888)
最后,我們啟動這個服務器:
tornado.ioloop.IOLoop.current().start()
此時訪問127.0.0.1:8888,將看到1個Hello World的字符串。
需要注意的是,由于Tornado的并發模型是建立在單線程異步執行的基礎上的,因此它運行1個WSGI應用比使用多線程的WSGI服務器要弱很多。當然,這種方式在Tornado和WSGI在相同進程時有用,否則將減少可擴展性。
相比而言,twisted的WSGI服務器使用多進程的方式運行的,因此在項目開發中,還是以twisted為主。
參考文章:
http://www.tornadoweb.org/en/stable/wsgi.html#running-wsgi-apps-on-tornado-servers
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37887.html
摘要:要使用協議我們不可能自己實現一個,現在比較流行的解決方案就是使用套接字編程,已經幫我們實現了協議的細節,我們可以直接拿來使用不用關心細節。 前幾天寫了 淺談cgi、wsgi、uwsgi 與 uWSGI 等一些 python web 開發中遇到的一些名詞的理解,今天博主就根據 wsgi 標準實現一個 web server,并嘗試用它來跑 Django、tornado 框架的 app。 編...
摘要:譯者說于年月日發布,該版本正式支持的關鍵字,并且用舊版本編譯同樣可以使用這兩個關鍵字,這無疑是一種進步。其次,這是最后一個支持和的版本了,在后續的版本了會移除對它們的兼容。 譯者說 Tornado 4.3于2015年11月6日發布,該版本正式支持Python3.5的async/await關鍵字,并且用舊版本CPython編譯Tornado同樣可以使用這兩個關鍵字,這無疑是一種進步。其次...
摘要:軟件開發者通常依據特定的框架實現更為復雜的商業運用和業務邏輯。所有,做開發,要用一個框架。的性能是相當優異的,因為它師徒解決一個被稱之為問題,就是處理大于或等于一萬的并發。 One does not live by bread alone,but by every word that comes from the mouth of God --(MATTHEW4:4) 不...
閱讀 3344·2021-11-10 11:36
閱讀 3244·2021-10-08 10:21
閱讀 2841·2021-09-29 09:35
閱讀 2416·2021-09-22 16:06
閱讀 3960·2021-09-09 09:33
閱讀 1327·2019-08-30 15:44
閱讀 3171·2019-08-30 10:59
閱讀 2982·2019-08-29 15:32