高性能python http服务器+web框架
源代码只有600多行
性能比较如下
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函数:
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"
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
<HTML>
<HEAD><TITLE>$title</TITLE></HEAD>
<BODY>
$contents
</BODY>
</HTML>
则对应的函数:
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.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变量
参考:https://github.com/makelove/OpenCV-Python-Tutorial ch31-Shi-Tomasi角点检测-适合于跟踪的图像特征 goodFeaturesToTrack.py # -*- coding:utf-8 -*- __author__ = 'play4fun' """ create time:15-10-29 上午7:52 使用 Shi-Tomas
=高性能python http服务器+web框架 支持linux windows 平台 由于没钱买mac,还没测 源代码只有600多行 性能比较如下 tornado 4kqps 多进程1wqps nginx+tornado 9kqps nginx+uwsgi 8kqps (注意:没说比nginx快,只是这几个web框架不行) django和webpy 性能不是一个级别的 本server 3.2w
FastPy3.0 发布了,FastPy是python领域一个高性能的web框架,底层封装gevent协程模型,使得python原生库操作mysql或者http时自动变成异步模式,使用上又具有django、webpy的易用性特点。 本次版本更新增加了gevent协程模式下数据库mysql连接池的使用例子,结合pymysql+gevent的特点,可以使得原本同步的mysql操作自动变为异步模式。对d
<% for item in data{ %> <%=item["id"]%>,<%= item["name"] %> array data: <% for i in item["array"] {%><%= i %><%}%> <%}%>
" A ruffled mind makes a restless pillow. " — Charlotte Brontë 深入 简单地讲,HTTP web 服务是指以编程的方式直接使用 HTTP 操作从远程服务器发送和接收数据。如果你要从服务器获取数据,使用HTTP GET;如果你要向服务器发送新数据,使用HTTP POST. 一些更高级的HTTP Web 服务 API也允许使用HTTP PU
本文向大家介绍Python 搭建Web站点之Web服务器与Web框架,包括了Python 搭建Web站点之Web服务器与Web框架的使用技巧和注意事项,需要的朋友参考一下 之前用 Django 做过一个小的站点,感觉Django太过笨重,于是就准备换一个比较轻量级的 Web 框架来玩玩。Web.py 作者已经挂掉,项目好久没有更新,所以不准备用它。而 Flask 也是一个成熟的轻量级 Web 框架
是否可以创建此HTTP服务器? 是否可以在文件夹中运行PHP文件? 非常感谢你们的回答。
?> 完全协程化的Http服务器实现,Co\Http\Server继承自Co\Server,在此不再赘述,只说差异。 与 Http\Server 的不同之处: 可以在运行时动态地创建、销毁 对连接的处理是在单独的子协程中完成,客户端连接的Connect、Request、Response、Close是完全串行的 !> 需要v4.4.0或更高版本 !> 若编译时开启HTTP2,则默认会启用HTTP2协
程序代码 http_server.php $http = new Swoole\Http\Server("0.0.0.0", 9501); $http->on('request', function ($request, $response) { var_dump($request->get, $request->post); $response->header("Content
Swoole框架提供的WebServer有3种使用方法 一、直接使用HttpServer HttpServer支持静态文件和include file。业务代码不需要写任何Server的代码,只需要设置document_root,并编写对应php文件。这种使用方法与Apache/Nginx+FPM类似。 server.php $AppSvr = new Swoole\Network\Protocol
11.4. 调试 HTTP web 服务 首先, 让我们开启 Python HTTP 库的调试特性并查看网络线路上的传输过程。 这对本章的全部内容都很有用, 因为你将添加越来越多的特性。 例 11.3. 调试 HTTP >>> import httplib >>> httplib.HTTPConnection.debuglevel = 1 >>> import urll
第 11 章 HTTP Web 服务 11.1. 概览 11.2. 避免通过 HTTP 重复地获取数据 11.3. HTTP 的特性 11.3.1. 用户代理 (User-Agent) 11.3.2. 重定向 (Redirects) 11.3.3. Last-Modified/If-Modified-Since 11.3.4. ETag/If-None-Match 11.3.5. 压缩 (Comp