FastPy- python 的 http服务器+web框架

网友投稿 1072 2022-10-21

FastPy- python 的 http服务器+web框架

FastPy- python 的 http服务器+web框架

高性能python http服务器+web框架

源代码只有600多行

性能比较如下

tornado 4kqps 多进程1wqpsnginx+tornado 9kqpsnginx+uwsgi 8kqpsdjango 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函数:

reload(sys)sys.setdefaultencoding(‘utf8’)FastpyAutoUpdate=Trueclass 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”

3、-文件默认静态文件(包括html,js、css、图片、文件等)放在static文件夹下html和js、css会自动压缩加速例如把a.jpg放到与fastpy.py同一层目录的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 title”t.contents = “my contents”return str(t)模板实现使用了python最快速Cheetah开源模板,性能约为webpy django thinkphp等模板的10倍以上:http://my.oschina-/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变量

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:子线程任务发生异常时主线程事务回滚示例过程
下一篇:「Web应用架构」轮询,SSE 和WebSocket,如何选择合适的?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~