开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 129

keycoding/fastpy

forked from feimat/fastpy
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
贡献代码
同步代码
对比差异 通过 Pull Request 同步
同步更新到分支
通过 Pull Request 同步
将会在向当前分支创建一个 Pull
Request,合入后将完成同步
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
高性能python http服务器+web协程框架
支持linux windows 平台 由于没钱买mac,还没测
c++版本请参考https://git.oschina.net/feimat/fastrpc
源代码只有800多行
性能比较如下
tornado 4kqps 多进程1wqps 
nginx+tornado 9kqps
nginx+uwsgi 8kqps (注意:没说比nginx快,只是这几个web框架不行) 
django和webpy 性能不是一个级别的
本server 2w qps 
没用任何python加速
已经真实使用到自己的多个项目之中,效果明显
欢迎加入it民工qq群339711102,一起探讨优化哦
用户文档:
1、启动:
 指定监听端口即可启动
 python fastpy.py 8992 
 (如果需要使用gevent协程功能请先安装gevent,要求版本1.0以上)
2、快速编写cgi,支持运行时修改,无需重启server
 在fastpy.py同一目录下
 随便建一个python 文件
 例如:
 example.py:
 #-*- coding:utf-8 -*-
 import sys
 #定义一个同名example类
 #定义一个tt函数:
 reload(sys)
 sys.setdefaultencoding('utf8')
 FastpyAutoUpdate=True
 class example():
 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"
 
 除了直接return作为response内容外
 fastpy还
 支持 request.ret(500,res) 的方式返回错误码和内容,
 支持 request.printChunk("print subcontent: xxx") 返回chunk局部内容
 request.flushChunk()结束chunk返回
 
 在WithGevent目录里 我们提供了协程方式的例子,
 将同步的调用(如访问mysql和发http等)变成异步(为什么这样读者可以查询gevent spawn原理, 
 里面提供协程下转发http和数据库连接池的例子)
 
 cgi所有使用例子:
 sample.py 上传文件和form表单使用等基本api的例子
 example.py 使用单例模式和线程+异步返回的例子
 WithGevent/dbsample.py 使用gevent+pymysql实现异步读写数据库的例子(gevent下线程池实现,更多gevent使用请自行百度)
 WithGevent/sample.py 使用gevent实现异步发送http请求的例子
 sendfile/sendfile.py 多线程文件上传服务端代码
 sendfile/sendfile_client.py 多线程文件上传客户端代码
 proxy_server/proxy.py 正向代理服务器代码
 跨平台/ 跨平台版本的fastpy.py 
 
 注意在同时使用gevent和redis连接池时请注意以下问题:
 http://stackoverflow.com/questions/10656953/redis-gevent-poor-performance-what-am-i-doing-wrong/10663498#10663498
 
 注意pymysql 连接mycat主从负载时,默认autocommit为false,要改为true才能正常使用 mycat的主从负载
3、支持超大文件上传下载
 默认静态文件(包括html,js、css、图片、文件等)放在static文件夹下
 html和js、css会自动压缩加速
 例如把a.jpg放到static文件夹下
 访问的url为 http://ip:port/static/a.jpg
 支持etag 客户端缓存功能
 (server 使用sendfile进行文件发送,不占内存且快速)
4、支持网页模板编写
 模版引擎代码只有十几行 在WithGevent/common/core.py 文件里的
 class FeimaTpl
 模版用法很简单
 1、用于写python代码的控制块 <% for item in data { %>
 <% %> 中间支持python的 if else for while等程序控制块,
 不同是模版用{ }来代替python 晦涩的缩进来区分控制块范围
 2、取值块 <%=item["id"]> 
 <%= %> 里写的是python的变量指即可,可在1中控制块内使用
 
 下面看个例子
 创建一个模板 a.html
 <html>
 <HEAD><TITLE><%=title%></TITLE></HEAD>
 <BODY>
 <% for item in data{ %>
 <%=item["id"]%>,<%= item["name"] %>
 array data:
 <% for i in item["array"] {%><%= i %><%}%>
 </br>
 <%}%>
 </BODY>
 </html>
 则对应的使用
 from common import core
 tpl = core.FeimaTpl(filepath="./a.html")
 d = []
 d.append({"id":1,"name":"name1","array":[2,4,5,6]})
 d.append({"id":2,"name":"name2","array":[1,3,5,7,9]})
 tpl.assign("title", "my title")
 tpl.assign("data", d)
 print tpl.render()
 则生成:
 <html>
 <HEAD><TITLE>my title</TITLE></HEAD>
 <BODY>
 
 1,name1
 array data:
 2456
 </br>
 
 2,name2
 array data:
 13579
 </br>
 
 </BODY>
 </html>
5、支持http/https透明代理
 python proxy.py 8995
 启动后再浏览器配置代理即可使用,可以弥补nginx 不支持https代理的不足
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

可能是世界上最高性能python web框架,支持多种平台,支持协程使用。 自带http服务器等功能
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/keycoding_f/fastpy.git
git@gitee.com:keycoding_f/fastpy.git
keycoding_f
fastpy
fastpy
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /