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查询mysql中文乱码问题
Nov 09 Python
初步解析Python中的yield函数的用法
Apr 03 Python
python字典get()方法用法分析
Apr 17 Python
python基于multiprocessing的多进程创建方法
Jun 04 Python
python中的编码知识整理汇总
Jan 26 Python
python负载均衡的简单实现方法
Feb 04 Python
Python global全局变量函数详解
Sep 18 Python
对python3 Serial 串口助手的接收读取数据方法详解
Jun 12 Python
python之pexpect实现自动交互的例子
Jul 25 Python
Python实现某论坛自动签到功能
Aug 20 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
python-地图可视化组件folium的操作
Dec 14 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 GeoIP的使用教程
2011/03/09 PHP
php判断目录存在的简单方法
2019/09/26 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
2018/01/30 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
JavaScript"模拟事件"的注意要点详解
2019/02/13 Javascript
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
Python压缩和解压缩zip文件
2015/02/14 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书