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 相关文章推荐
35个Python编程小技巧
Apr 01 Python
Python中replace方法实例分析
Aug 20 Python
Python常用随机数与随机字符串方法实例
Apr 09 Python
用于统计项目中代码总行数的Python脚本分享
Apr 21 Python
Python算术运算符实例详解
May 31 Python
详解如何将python3.6软件的py文件打包成exe程序
Oct 09 Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 Python
使用Fabric自动化部署Django项目的实现
Sep 27 Python
python3中numpy函数tile的用法详解
Dec 04 Python
基于Python执行dos命令并获取输出的结果
Dec 30 Python
jupyter 实现notebook中显示完整的行和列
Apr 09 Python
如何使用Django Admin管理后台导入CSV
Nov 06 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判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
Django 导出 Excel 代码的实例详解
2017/08/11 Python
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
python实现三维拟合的方法
2018/12/29 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
html5 分层屏幕适配的方法
2018/03/16 HTML / CSS
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
经济与贸易专业应届生求职信
2013/11/19 职场文书
求职简历的自我评价
2014/01/31 职场文书
校园文化建设方案
2014/02/03 职场文书
平面设计求职信
2014/03/10 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
学历证明样本
2015/06/16 职场文书
毕业证明书
2015/06/19 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js
python如何将mat文件转为png
2022/07/15 Python