python搭建简易服务器分析与实现


Posted in Python onDecember 15, 2012

需求分析
省油宝用户数 已经破了6000,原有的静态报表 已经变得臃肿不堪,
每次打开都要缓上半天,甚至浏览器直接挂掉
采用python搭建一个最最简易的 web 服务 请求一个nick
就返回 对应的 报表数据 参数用GET方式传送

调研与实现
园里没找到靠谱的,google了半天,最终还是成功了。
以下是源码,里面记录了 其中的 一些问题

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
""" 
@author: zhoujiebin 
@contact: zhoujiebing@maimiaotech.com 
@date: 2012-12-14 15:25 
@version: 0.0.0 
@license: Copyright maimiaotech.com 
@copyright: Copyright maimiaotech.com 
""" 
import os 
import sys 
import urllib 
import SimpleHTTPServer 
import SocketServer 
PORT = 8080 
WEBDIR = "/home/zhoujiebing/report_web_service" 
from syb_report_html import get_html 
class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler): 
def translate_path(self, path): 
#用于设定根目录 
os.chdir(WEBDIR) 
SimpleHTTPServer.SimpleHTTPRequestHandler.translate_path(self,path) 
def do_GET(self): 
#服务器端响应GET请求的方法 
#问题1 如何拿到客户端的GET参数 
#我找半天没找到,最后__dict__看到path里有路径,只能从路径里 提取参数了 
#从path中提取 GET参数 
nick = self.path[1:] 
#汉字url转码 
nick = str(urllib.unquote(nick)) 
if nick != 1: 
report_html = get_html(nick) 
else: 
report_html = 'nick非法' 
print '请求 ' + nick + ' 省油宝计划报表' 
self.send_response(200) 
self.send_header("Content-type", "text/html") 
self.send_header("Content-length", len(report_html)) 
self.end_headers() 
self.wfile.write(report_html) 
if __name__ == '__main__': 
try: 
httpd = SocketServer.TCPServer(("", PORT), Handler) 
print "dir %s serving at port %s"%(repr(WEBDIR), PORT) 
#启动服务器 端进程 
httpd.serve_forever() 
except Exception,e: 
print '异常',e

执行这个程序 web服务程序 就启动了
在浏览器中 输入 ip:8080/nick 就可以了
Python 相关文章推荐
Python模块学习 filecmp 文件比较
Aug 27 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
Python 最强编辑器详细使用指南(PyCharm )
Sep 16 Python
动态设置django的model field的默认值操作步骤
Mar 30 Python
新建文件时Pycharm中自动设置头部模板信息的方法
Apr 17 Python
解决python使用list()时总是报错的问题
May 05 Python
Pycharm中配置远程Docker运行环境的教程图解
Jun 11 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
python实现数学模型(插值、拟合和微分方程)
Nov 13 Python
python实现启动一个外部程序,并且不阻塞当前进程
Dec 05 Python
python 实现图片特效处理
Apr 03 Python
Python笔记(叁)继续学习
Oct 24 #Python
python笔记(2)
Oct 24 #Python
python笔记(1) 关于我们应不应该继续学习python
Oct 24 #Python
Python的一些用法分享
Oct 07 #Python
Python天气预报采集器实现代码(网页爬虫)
Oct 07 #Python
python代码检查工具pylint 让你的python更规范
Sep 05 #Python
python 基础学习第二弹 类属性和实例属性
Aug 27 #Python
You might like
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
php在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
php HTML无刷新提交表单
2016/04/05 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
javascript 自定义事件初探
2009/08/21 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
jQuery轮播图效果精简版完整示例
2016/09/04 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
如何将python中的List转化成dictionary
2016/08/15 Python
详解Python异常处理中的Finally else的功能
2017/12/29 Python
python爬虫实例详解
2018/06/19 Python
python剪切视频与合并视频的实现
2020/03/03 Python
python线程里哪种模块比较适合
2020/08/02 Python
优秀士兵个人事迹材料
2014/01/19 职场文书
管理专员自荐信
2014/01/26 职场文书
中学生打架检讨书
2014/02/10 职场文书
离婚被告答辩状
2015/05/22 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
使用python绘制横竖条形图
2022/04/21 Python
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS