python web开发初探
来源:互联网 发布:听音记谱软件 编辑:程序博客网 时间:2024/05/17 04:33
python web服务器环境的搭建
选择什么样的环境是面临的第一个问题。由于初涉python web开发,花费了许多时间查相关资料,幸好以前有些java方面的经验,否则对习惯了集成开发环境的人来说是相当痛苦的。
根据我初步的了解来看,服务器环境大概有3个部分:web前端代理及wsgi服务器+web应用框架+数据库服务器。较为常用的是:nginx & uwsgi + flask / web.py + mysql或者 nginx + tornado + mysql。 实际上tornado自己就能运行起来,不过nginx可以同时部署多个应用,并统一做反向代理以及负载均衡。
由于工作的原因,不得不选择在windows上做技术学习,所以暂时选择nginx + tornado。如果是在产品部署阶段,这样做其实是会让tornado的并发性能大打折扣。因此,我会在熟悉一段时间后采用VMware虚拟机安装CentOS5.8来部署,到最后直接部署到linux机上。
关于在window上使用tornado会带来那些影响,可以参考:http://my.oschina.net/quanpower/blog/151468、http://my.oschina.net/quanpower/blog/151471,言之就是unix机上的epoll机制没有得到支持。
uWSGI采用自己的UWSGI协议,占用内存少、可以负载均衡、速度快。但是UWSGI目前要在Windows下部署,需要到Cygwin下编译,也是因为windows下不支持epoll机制。
关于性能的对比可以参考:http://1.guotie.sinaapp.com/?p=168
Tornado的特性
tornado是一个极轻量级、高可伸缩性和非阻塞IO的Web服务器软件。其中最重要的就是非阻塞。
由于tornado 对 WSGI 只提供了有限的支持,即使如此,因为 WSGI 并不支持非阻塞式的请求,所以如果你使用 WSGI 代替 Tornado 自己的 HTTP 服务的话,那么你将无法使用 Tornado 的异步非阻塞式的请求处理方式。 比如@tornado.web.asynchronous、httpclient 模块、auth 模块, 这些将都无法使用。
因为 FriendFeed 以及其他 Tornado 的主要用户在使用时都是基于 nginx或者 Apache 代理之后的。所以现在 Tornado 的 HTTP 服务部分并不完整,它无法处理多行的 header 信息,同时对于一 些非标准的输入也无能为力。所以,要谨慎的使用tornado.wsgi.WSGIApplication类,一般还是使用tornado.web.Application类来创建实例。
- python web开发初探
- [python web]wsgi初探
- web开发技术初探
- Go web开发初探
- Go web开发初探
- Python开发初探
- Delphi开发Web Service初探
- Web端VR开发初探
- Django 初探,搭建python的web系统
- Web开发初探(一) HTML基础
- Web开发初探(二) HTML基础
- Web开发工具之HBuilder初探
- 【BootStrap】web前端开发框架初探
- Python web开发框架
- python的web开发
- python Web开发
- Python Web开发
- Python FAQ:Web开发
- 基于VC6.0的多线程编码及音频读取
- c++中#prsgma once与#ifndef
- 程序人生-7-浪潮之巅
- Mac下使用Xquartz连接CentOS的Xdm服务器
- printf函数十六进制格式化输出并且2字节对齐
- python web开发初探
- 使用NDCG评估关键词推荐系统的相关性
- How to recover SA password on Microsoft SQL Server 2008 R2
- 智力题攻略——推理类
- 怎么设置环境变量
- opengl编程学习笔记(四)(纹理映射)(结合nvdia OpenglSDk 的nvimage类)
- 为什么添加using namespace std
- scp命令
- 【转载】Pet Shop 4 架构与技术分析(后面有点我自己的补充)