这个新系列是为了记录在python下的工作点滴,最近从微软平台突然转换到了linux平台下工作,于是.NET不怎么排得上用场,且在python下工作多日才发现原来在.NET下的日子真是往事不堪回首月明中……当然仅仅是一家之言,纯属个人感受。总之呢,玩蛇记这个系列就是用来专门记录python下工作的感想之用了。
在.NET下工作崇尚集成化,集成化的IDE,一体化的服务器,从操作系统到webserver,都是ms inside。非常适合初学者,啥都不用想,也没有太多让你选的。慢慢的能力提高了,就会觉得微软提供的东西不是那么完美,当你在开发的时候,很多东西如果不用微软内置的机制,就会让你费老大的力气去绕弯实现,比如DataGrid,很强大,但是大多数人都会在自己的blog离告诫后来者,还是回去用repeater吧,所见即所得的编辑器里面也因为各种为了妥协而加入的代码变得面目全非,直到后来的MVC的出现才勉强解决,不过以前在webform里积累的很多东西和技巧就付诸东流了。
在正式开篇前说了很多对.NET的不满,呵呵,小小偏题,幸亏博客园不是起点要按字数收钱。
话说回来,python很适合已经熟练掌握一种语言和平台的开发人员做拓展,比如已经熟练掌握java平台或者.NET的开发人员,当然更适合C和C++的开发人员来偶尔玩票一下Web开发。python好玩但并不是说它就是个漂亮的玩具,而是一种在linux,unix平台下非常具备生产力的语言。在很早的时候linux和bsd系统就默认内置python了,而现在很smart的ubuntu之类的很多集成的工具都是python编写的,而在web开发方面,估计是因为圈子小,而很多业余玩python的人大多不是正职搞Web开发的,所以国内用python开发Web的人不多。不过最近django之类的框架也出了书,虽然是沾了ROR的光,不过好歹也有人关注了。
其实python下最大的问题不是选择太少,恰恰是选择太多了,由于python的生产力实在是太强,要造个轮子的成本实在是很低,所以到处都是轮子,从Quixote,Django,web2py,web.py,karrigell……国内的还有uliweb……
绝对让你挑得眼花缭乱,也许是每个应用的需求各不相同,所以各个框架的出发点也各有分别,对初学者来说是眼花缭乱了,但是相对来说可选的范围也广了。还有一点和微软平台的区别就是,部署上也不是一体式的,IIS上架着.NET,这点其实是以前我非常眼热的。看着nginx,lighttpd这些新生代web server的让人心动的benchmark,再对比看着iis(那些标榜自己高performance的web server 在做对比测试的时候都不和iis一起比,不带一起玩的,不是一个等级……)
说到performance,我感觉自己有强烈的performance强迫症,看着跑得快的就眼热,所以就有了今天的猪脚-tornado,
这是一个facebook收购的一家叫friend feed的公司出品的框架,其实也是一款高性能的web server,纯python编写,开源,意味着我可以自己对其进行改进,且还有一个好处就是在文档异常缺乏的时候可以直接翻源码解决问题,事实证明这点非常有用,tornado的文档非常的缺乏,而且也没有api的说明,官网上的文档基本上等于就是把代码里的注释集中到了一起,不过还好python是如此的可爱,很多时候是靠着dir(object)来解决了问题。
由于facebook被和谐掉了,所以tornado的官网也未能幸免,其实python的下载页也被和谐掉了,不知道怎么回事,莫非是python.com造的孽?
祭上puff,直奔www.tornado.org,下载下来,解压,安装:
python setup.py install
注意,必须在linux下安装,windows下没有epoll,所以用select代替了,非常的没效率,这点上twisted也是一般的光景。
由于tornado本身就是一个web server,所以自己就能单独运行。在用了2个星期后我感觉其实不安装,直接引用源码运行更好一些,很多时候可以方便自己对这个系统做点小改造。
安装后执行python,打开python shell,在其中输入 import tornado
回车后不报错就说明安装成功了
现在我们就可以用tornado来编写网站了,新建一个server.py
内容如下:
import tornado.httpserver
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
保存后,执行 python server.py
这个时候就能够通过浏览器看到 hello world的页面了
tornado和Django一样通过正则表达式的url mapping,不过有区别的是没有强制区分view和model,因为tornado虽然有一个简单的数据库封装,但是没有orm,幸好我对orm也不怎么感冒,且在python下orm确实也很鸡肋,而且真要用orm也能直接用现成的,真要自己写一个也很容易。模版系统也比较方便,不过没有集成Session,但是内部实现了一个安全cookie。不过现在很多系统都没用inproc的session了,所以就自己DIY了一个用memcached作为backend的Session出来。
这些东西我会在接下来的一系列POST里涉及到,因为没有写教程的打算,所以很多细节可能就点到即止了,更详细的相信愿意用这个玩意儿的也有这个能力去啃啃源代码,也就几千行。
另,tornado是一个单进程,单线程的Server,所以在每个RequestHandler的方法中的代码都是线程安全的。
很多人会有疑问,单进程单线程能快得快吗?其实事实胜于雄辩:
不过也由于这个特征,不能写一些延迟很大的操作,现在tornado暂时只支持用异步的curl,数据库操作暂时还是阻塞的,我正在研究增加一个异步的数据库操作模块来进一步提升其性能,如果有任何成果我会第一时间公布,也希望喜欢玩新鲜的蛇友同我交流
分享到:
相关推荐
Tornado 是一个强大的 Python Web 开发框架,以其高性能和异步网络I/O闻名。它最初由 FriendFeed 团队开发,后来被 Facebook 收购并开源。Tornado 的设计目标是处理大量的并发连接,尤其适合长连接和实时Web应用,如...
**Tornado Web Server详解** Tornado Web Server,简称Tornado,是一个开源的、高性能的Web服务器和异步网络库,最初由...无论你是初学者还是经验丰富的开发者,Tornado都是构建高性能Web应用的一个值得考虑的工具。
Tornado-Swirl,一个基于Python的轻量级库,是Tornado框架的扩展,版本0.1.9,封装了Tornado的一些功能,旨在帮助开发者更高效地构建高性能、异步网络应用程序。在本文中,我们将深入探讨Tornado-Swirl的核心特性和...
Solr是Apache软件基金会的一个开源项目,是一款功能强大的全文搜索引擎,广泛用于构建高性能的搜索应用。pysolr库使得Python开发者能够轻松地与Solr服务器进行交互,包括索引文档、执行查询、管理索引等操作。 ...
Tornado Web框架是Python中的一个轻量级、高性能的异步网络库,适用于构建可处理大量并发连接的Web应用。Tornado以其非阻塞I/O模型和对WebSockets的良好支持而闻名,是构建实时Web服务的理想选择。 **RESTful API**...
Tornado 是一个轻量级、高性能的 Web 服务器和异步网络库,特别适合于长连接和实时Web应用。 标题 "project-of-tornado.rar" 提示这是一个关于 Tornado 的项目压缩包,很可能包含了源代码、配置文件和其他相关资源...
《PyPI官网下载 dp-tornado-0.3.9.tar.gz 深度解析》 在Python的世界里,PyPI(Python Package Index)是官方的软件仓库,它为...开发者通过深入研究和应用这个库,可以更好地构建高性能、高可用性的分布式系统。
Tornado是一款高性能、异步网络库,最初由FriendFeed开发,后被Facebook收购并开源。它以其非阻塞I/O模型和Web服务器能力在Python社区中广受欢迎,尤其适用于高并发场景。Tornado不仅是一个Web框架,还包含了一个...
Tornado是一个开源的、高性能的Web服务器和异步网络库,最初由FriendFeed团队开发,后来被Facebook收购并公开发布。这个压缩包可能包含了一个简单的Tornado应用程序示例,用于帮助初学者了解如何在Python中使用...
文档中还提到了如何使用异步编程的协程和并发模型,这是实现高性能网络编程的关键技术之一。 总之,Tornado是一个功能强大的Python Web框架,它支持异步编程和非阻塞IO,对于需要高并发处理能力的应用程序来说是一...
这些模块共同构建了一个完整的Web开发环境,让开发者可以轻松创建出高性能、可扩展的应用。 在HTTP服务器层面,Tornado提供了一个基于异步I/O的服务器,能够快速响应并处理请求。同时,其Web应用程序接口允许开发者...
Tornado框架是Python Web开发中的一个轻量级但强大的异步网络库,它以其高性能、非阻塞I/O和灵活性而受到开发者的喜爱。这个"**Tornado框架课件资料.rar**"压缩包包含了深入学习Tornado框架所需的重要资源,包括源码...
**Python库Tornado 6.1...总的来说,Tornado是一个强大且灵活的工具,无论是在构建高性能的Web服务还是实时应用上,都展现出了其卓越的能力。对于Python开发者来说,熟练掌握Tornado能够极大地提升开发效率和应用性能。
Tornado,作为一个高度优化的Python Web框架,被广泛应用于异步网络编程和高性能Web服务。在本文中,我们将深入探讨Tornado 4.5.2这一特定版本,了解其在Python 3.6环境下对AMD64架构的支持,以及其核心组件和特性。...
1. **HTTP Server**:Tornado提供了自定义的HTTP服务器,它支持WSGI(Web Server Gateway Interface)标准,并且可以与异步请求处理相结合,使得开发高性能Web应用成为可能。 2. **Web框架**:Tornado自带了一个轻...
Tornado是一个轻量级的Python Web服务器和异步网络库,常用于构建高性能、高并发的Web应用。在这个案例中,我们关注的是如何通过HTML、CSS和JavaScript来实现用户友好的界面设计。 首先,`personal.html`是个人信息...
Tornado 是一个强大的 Python Web 开发框架和异步网络库,它以其高性能、低延迟的特性而备受赞誉。这个压缩包“tornado-4.5.2-cp36-cp36m-win_amd64.zip”包含了适用于 Python 3.6 的 Tornado 框架版本 4.5.2,特别...
2. **Tornado框架**: Tornado是一个高性能、异步网络库,用于构建高并发的Web应用。在Python-WebSSH中,Tornado负责处理HTTP请求和WebSocket连接,确保用户与远程服务器之间的实时交互。 3. **Paramiko库**: ...
它支持非阻塞I/O模型,适合构建高性能、可扩展的网络应用,特别是对于处理大量并发连接的情况。Tornado包含了Web服务器、HTTP客户端/服务器、WebSocket支持以及其他网络相关的工具。 “pytest-tornado-0.4.2.tar.gz...