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 相关文章推荐
tornado捕获和处理404错误的方法
Feb 26 Python
pyqt4教程之messagebox使用示例分享
Mar 07 Python
Python使用urllib2模块实现断点续传下载的方法
Jun 17 Python
python+opencv实现动态物体识别
Jan 09 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
python实现根据文件关键字进行切分为多个文件的示例
Dec 10 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
Jan 07 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
pytorch 实现模型不同层设置不同的学习率方式
Jan 06 Python
python 实现图像快速替换某种颜色
Jun 04 Python
Python爬虫使用bs4方法实现数据解析
Aug 25 Python
Pytest中conftest.py的用法
Jun 27 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
一个ubbcode的函数,速度很快.
2006/10/09 PHP
PHP删除目录及目录下所有文件的方法详解
2013/06/06 PHP
PHP之预定义接口详解
2015/07/29 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
2016/03/16 PHP
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
Python实现的概率分布运算操作示例
2017/08/14 Python
python3爬虫怎样构建请求header
2018/12/23 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
python Pillow图像处理方法汇总
2019/10/16 Python
Python模块 _winreg操作注册表
2020/02/05 Python
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
在职党员进社区活动总结
2014/07/05 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
Python词云的正确实现方法实例
2021/05/08 Python
Python数据可视化之用Matplotlib绘制常用图形
2021/06/03 Python