设为首页 收藏本站
查看: 1121|回复: 0

[软件发布] FastPy 2.1 发布,高性能 python web 框架

[复制链接]
累计签到:77 天
连续签到:1 天
发表于 2015-3-5 03:13:34 | 显示全部楼层 |阅读模式
3月21日 深圳 OSC 源创会开始报名罗,送华为海思开发板
  FastPy 2.1 发布,此版本主要增加:
  1、异步返回接口 request.ret(content)
  2、增加单例调用示例,具体可参考例子 example.py
  C++版本服务器框架亦有更新 具体可参考 fastrpc
  #-*- coding:utf-8 -*-
  import os
  import sys
  import time
  import thread
  
  
  class Singleton(object):
  def __new__(cls, *args, **kw):
  if not hasattr(cls, '_instance'):
  orig = super(Singleton, cls)
  cls._instance = orig.__new__(cls, *args, **kw)
  try:
  method = getattr(cls._instance, "single_init")
  method()
  except Exception,e:
  print "single_init is null"
  return cls._instance
  
  
  def done(request, response_head, res):
  time.sleep(1)
  res += "second"
  request.ret(res)
  
  
  class example(Singleton):
  
  
  def single_init(self):
  self.a = 1
  print "init"
  
  
  def test_alive(self, request, response_head):
  return str(self.a)
  res = "first "
  thread.start_new_thread(done, (request, response_head, res))
欢迎大家一起来参与完善 FastPy 项目:http://git.oschina.net/feimat/fastpy?
  FastPy 是高性能python http服务器+web框架
  源代码只有400多行
  另有开源pb rpc框架:?http://www.oschina.net/p/python-fastrpc
  性能比较如下
  tornado 4kqps 多进程1wqps?
  nginx+tornado 9kqps
  nginx+uwsgi 8kqps
  django web.py均在8k以下?
  
  
  本server?3.2w?qps?
  没用任何python加速
  
  不相信的可以自己压测下哦
  已经真实使用到自己的多个项目之中,效果明显
  有需要优化的地方或者建议欢迎联系?qq?512284622
  
  
  fastpy 是高性能 Python HTTP 服务器。
  
  用户文档:
  
  1、启动:
  指定监听端口即可启动
  python fastpy.py 8992
  
  2、快速编写cgi,支持运行时修改,无需重启server
  
  在fastpy.py同一目录下
  随便建一个python 文件
  例如:
  example.py:
  #-*- coding:utf-8 -*-
  import sys
  #定义一个同名example类
  #定义一个tt函数:

  >  sys.setdefaultencoding('utf8')
  FastpyAutoUpdate=True

  >  def tt(self, request, response_head):
  #print request.form
  #print request.getdic
  #fileitem = request.filedic["upload_file"]
  #fileitem.filename
  #fileitem.file.read()
  return "ccb"+request.path
  
  则访问该函数的url为 http://ip:port/example.tt
  修改后保存,即可访问,无需重启
  FastpyAutoUpdate 属性可控制需不需要热部署
  FastpyAutoUpdate=true 支持热部署,修改无需重启
  FastpyAutoUpdate=false 则不支持热部署,修改需要重启
  tt函数必须带两个参数
  request:表示请求的数据 默认带以下属性
  headers: 头部 (字典)
  form:? post参数,包括form表单 (字典)
  getdic: url参数 (字典)
  filedic: form表单中文件 (字典)
  rfile: 原始http content内容? (字符串)
  action: python文件名 (这里为example)
  method: 函数方法??? (这里为tt)
  command:? (get or post)
  path: url (字符串)
  http_version: http版本号 (http 1.1)
  response_head: 表示response内容的头部
  例如如果要返回用gzip压缩
  则增加头部
  response_head["Content-Encoding"] = "gzip"
  
  3、下载文件
  默认静态文件(包括html,js、css、图片、文件等)放在static文件夹下
  html和js、css会自动压缩加速
  例如把a.jpg放到static文件夹下
  访问的url为 http://ip:port/static/a.jpg
  支持etag 客户端缓存功能
  (server 使用sendfile进行文件发送,不占内存且快速)
  
  4、支持网页模板编写
  创建一个模板 template.html
  
  $title
  
  $contents
  
  
  
  则对应的函数:
  def template(request,response_head):
  t = Template(file="template.html")

  t.title? = "my>  t.contents? = "my contents"
  return str(t)
  模板实现使用了python最快速Cheetah开源模板,
  性能约为webpy django thinkphp等模板的10倍以上:
  http://my.oschina.net/whp/blog/112296
  
  5、支持http/https透明代理
  python proxy.py 8995
  启动后再浏览器配置代理即可使用,可以弥补nginx 不支持https代理的不足
  
  6、设计模式:
  每个线程一个实例:
  fastpy是多进程内再多线程的模式,每个线程一个example 类对象.
  
  每个进程一个实例:
  如果想让某个对象或变量一个进程只定义一个,
  可以使用单例模式:
  class example(Singleton):
  def __new__(cls, *args, **kw):
  if not hasattr(cls, '_instance'):
  orig = super(example,cls)
  cls._instance = orig.__new__(cls, *args, **kw)
  # do something when create?
  return cls._instance
  
  
  所有进程一个实例:
  因为fastpy是多进程的,如果想让所有进程所有线程也只使用一个对象
  可以直接使用python的多进程接口
  mgr = multiprocessing.Manager()
  ip_dic = mgr.dict()
  这样每个进程的每个线程里都共用这个ip_dic变量

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-43356-1-1.html 上篇帖子: 深度影院 V2.2 发布,尽享你的视听盛宴! 下篇帖子: KBEngine v0.4.10 发布,分布式游戏服务端引擎
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表