摘要:之前一直很想知道在上是如何运行其他应用的例如利用可以作为运行的服务器。需要注意的是由于的并发模型是建立在单线程异步执行的基础上的因此它运行个应用比使用多线程的服务器要弱很多。当然这种方式在和在相同进程时有用否则将减少可扩展性。
之前一直很想知道,在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
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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) 不...
阅读 3321·2021-11-10 11:36
阅读 3208·2021-10-08 10:21
阅读 2820·2021-09-29 09:35
阅读 2365·2021-09-22 16:06
阅读 3895·2021-09-09 09:33
阅读 1287·2019-08-30 15:44
阅读 3145·2019-08-30 10:59
阅读 2959·2019-08-29 15:32