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缩进区别分析
Feb 15 Python
Python兔子毒药问题实例分析
Mar 05 Python
pandas apply 函数 实现多进程的示例讲解
Apr 20 Python
python实现二维插值的三维显示
Dec 17 Python
Python同步遍历多个列表的示例
Feb 19 Python
Python嵌套式数据结构实例浅析
Mar 05 Python
Python日期时间Time模块实例详解
Apr 15 Python
Python代理IP爬虫的新手使用教程
Sep 05 Python
Python爬取爱奇艺电影信息代码实例
Nov 26 Python
Python hmac模块使用实例解析
Dec 24 Python
python实现俄罗斯方块小游戏
Apr 24 Python
anaconda升级sklearn版本的实现方法
Feb 22 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过滤危险html代码
2008/08/18 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
PHP图片上传代码
2013/11/04 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
JS学习之一个简易的日历控件
2010/03/24 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
js判断文件格式及大小的简单实例(必看)
2016/10/11 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
解决python "No module named pip" 的问题
2018/10/13 Python
django序列化serializers过程解析
2019/12/14 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
python实现批量转换图片为黑白
2020/06/16 Python
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
房地产融资计划书
2014/01/10 职场文书
平民服装店创业计划书
2014/01/17 职场文书
创业计划书的写作技巧及要点
2014/01/31 职场文书
毕业实习计划书
2015/01/16 职场文书
学校捐书倡议书
2015/04/27 职场文书
暂住证明怎么写
2015/06/19 职场文书
婚宴新娘致辞
2015/07/28 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB