史上最简单的带流控功能的http server
来源:互联网 发布:开发java最好用的软件 编辑:程序博客网 时间:2024/05/18 12:35
s.py
import timeimport SimpleHTTPServerimport SocketServerBYTES_PER_SECOND=160*1024class MyHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_GET(self): """Serve a GET request.""" f = self.send_head() if f: self.copyfileobj(f, self.wfile) f.close() def copyfileobj(self,fsrc, fdst, length=16*1024): """copy data from file-like object fsrc to file-like object fdst""" count = 0 t1 = time.time() while 1: buf = fsrc.read(length) if not buf: break fdst.write(buf) count += len(buf) if count >= BYTES_PER_SECOND: count = 0 delay = 1.0 - (time.time() - t1) if delay > 0.0: time.sleep(delay) t1 = time.time() PORT = 8000Handler = MyHTTPRequestHandlerhttpd = SocketServer.TCPServer(("127.0.0.1", PORT), Handler)print "serving at port", PORThttpd.serve_forever()
yes,that's it! 总共三十几行代码。BYTES_PER_SECOND用于指定每秒传输的最大字节数。127.0.0.1 是服务器监听的IP。8000为http server监听的端口。
这就是为什么写python程序是一种享受的原因。号称battery include的python,人用人爱的python。
但是python也由此给人一种误解,只能写功能简单的程序。写不了高大上的程序,其实真的是一种很大的误解。
配合上DNS服务器,这个30行的程序可以作为一个不错的升级测试环境。
另外,顺便说一句,如果是在linux下面,端口号如果小于1000的话运行程序是要系统权限的,要不然会抛异常。
0 0
- 史上最简单的带流控功能的http server
- 最简单的HTTP SERVER
- 一个简单的http server
- 一个支持上传的简单http server
- Ubuntu下创建简单的Http server
- 写一个python脚本,实现简单的http服务器功能:
- 一个用C#实现的简单http server
- 一个用C#实现的简单http server(转)
- 简单易用的Http Server---Cherokee
- 使用libevent实现最简单的android http-server
- 使用libevent实现最简单的android http-server
- 一个支持上传的简单 HTTP Server(Python)
- 用nodejs搭建最简单、轻量化的http server
- 用Python编写一个简单的Http Server
- 用nodejs搭建最简单、轻量化的http server
- 用nodejs搭建最简单、轻量化的http server
- Jetty:Hello World,使用main启动的简单http server
- 用nodejs搭建最简单、轻量化的http server
- poj2816 Popular Cows
- uva 10173 Smallest Bounding Rectangle
- 基于事件I/O模型的socket通信
- HDU 3982 半平面交+圆与多边形面积交
- 指针常量与常量指针
- 史上最简单的带流控功能的http server
- Arcpy基础入门-6、遍历
- 读取硬盘的MBR引导扇区(Windows各系统通用)
- Get和Post的区别
- clang_complete插件所需的libclang 的编译
- axjzsubggnabvvdshnfljqydcl
- 教育中的反思精神——从书籍《创造:一流大学之魂》的一则评论谈起
- Sonar的安装
- 在虚拟机上同步服务器上的时间_Hbase