FastPy python 的 http服务器+web框架

我要开发同款
匿名用户2014年05月15日
41阅读
开发技术Python
所属分类Web应用开发、Web框架
授权协议GPL

作品详情

高性能pythonhttp服务器+web框架

源代码只有600多行

性能比较如下

tornado4kqps多进程1wqps nginx+tornado9kqpsnginx+uwsgi8kqpsdjangoweb.py均在8k以下 

本server 3.2w qps 没用任何python加速不相信的可以自己压测下哦已经真实使用到自己的多个项目之中,效果明显有需要优化的地方或者建议欢迎联系 qq 512284622

fastpy是高性能PythonHTTP服务器。用户文档:1、启动:  指定监听端口即可启动  pythonfastpy.py89922、快速编写cgi,支持运行时修改,无需重启server  在fastpy.py同一目录下  随便建一个python文件  例如:  example.py:  #-*-coding:utf-8-*-  importsys  #定义一个同名example类  #定义一个tt函数:  reload(sys)  sys.setdefaultencoding('utf8')  FastpyAutoUpdate=True  classexample():      deftt(self,request,response_head):          #printrequest.form          #printrequest.getdic          #fileitem=request.filedic["upload_file"]          #fileitem.filename          #fileitem.file.read()          return"ccb"+request.path  则访问该函数的url为https://ip:port/example.tt  修改后保存,即可访问,无需重启  FastpyAutoUpdate属性可控制需不需要热部署  FastpyAutoUpdate=true支持热部署,修改无需重启  FastpyAutoUpdate=false则不支持热部署,修改需要重启  tt函数必须带两个参数  request:表示请求的数据默认带以下属性     headers:头部(字典)     form: post参数,包括form表单(字典)     getdic:url参数(字典)     filedic:form表单中文件(字典)     rfile:原始httpcontent内容 (字符串)     action:python文件名(这里为example)     method:函数方法   (这里为tt)     command: (getorpost)     path:url(字符串)     http_version:http版本号(http1.1)  response_head:表示response内容的头部     例如如果要返回用gzip压缩     则增加头部     response_head["Content-Encoding"]="gzip"3、下载文件  默认静态文件(包括html,js、css、图片、文件等)放在static文件夹下  html和js、css会自动压缩加速  例如把a.jpg放到与fastpy.py同一层目录的static文件夹下  访问的url为https://ip:port/static/a.jpg  支持etag客户端缓存功能  (server使用sendfile进行文件发送,不占内存且快速)4、支持网页模板编写  创建一个模板template.html  <HTML>      <HEAD><TITLE>$title</TITLE></HEAD>      <BODY>          $contents      </BODY>  </HTML>  则对应的函数:  deftemplate(request,response_head):      t=Template(file="template.html")      t.title ="mytitle"      t.contents ="mycontents"      returnstr(t)  模板实现使用了python最快速Cheetah开源模板,  性能约为webpydjangothinkphp等模板的10倍以上:  https://my.oschina.net/whp/blog/1122965、支持http/https透明代理  pythonproxy.py8995  启动后再浏览器配置代理即可使用,可以弥补nginx不支持https代理的不足6、设计模式:    每个线程一个实例:        fastpy是多进程内再多线程的模式,每个线程一个example类对象.    每个进程一个实例:        如果想让某个对象或变量一个进程只定义一个,        可以使用单例模式:

classexample(Singleton):  def__new__(cls,*args,**kw):    ifnothasattr(cls,'_instance'):      orig=super(example,cls)      cls._instance=orig.__new__(cls,*args,**kw)      #dosomethingwhencreate     returncls._instance    所有进程一个实例:        因为fastpy是多进程的,如果想让所有进程所有线程也只使用一个对象        可以直接使用python的多进程接口        mgr=multiprocessing.Manager()        ip_dic=mgr.dict()        这样每个进程的每个线程里都共用这个ip_dic变量

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论