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 thread 并发且顺序运行示例
Apr 09 Python
Python升级提示Tkinter模块找不到的解决方法
Aug 22 Python
Python实现简单的四则运算计算器
Nov 02 Python
Python切换pip安装源的方法详解
Nov 18 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
Dec 04 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 Python
python多进程实现文件下载传输功能
Jul 28 Python
基于随机梯度下降的矩阵分解推荐算法(python)
Aug 31 Python
Python 实现取多维数组第n维的前几位
Nov 26 Python
python标准库OS模块函数列表与实例全解
Mar 10 Python
使用OpenCV去除面积较小的连通域
Jul 05 Python
django数据模型中null和blank的区别说明
Sep 02 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
PHP form 表单传参明细研究
2009/07/17 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
2015/11/07 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
[02:23]DOTA2英雄基础教程 幻影长矛手
2013/12/09 DOTA
Python多进程编程技术实例分析
2014/09/16 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
2017/09/11 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
关于Java String的一道面试题
2013/09/29 面试题
两年的个人工作自我评价
2014/01/10 职场文书
大学生个人求职信例文
2014/07/07 职场文书
项目工作说明书
2014/07/29 职场文书
学校党员个人问题整改措施思想汇报
2014/10/08 职场文书