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 自动安装 Rising 杀毒软件
Apr 24 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
Apr 08 Python
利用python微信库itchat实现微信自动回复功能
May 18 Python
详解 Python 与文件对象共事的实例
Sep 11 Python
python正则表达式及使用正则表达式的例子
Jan 22 Python
Python实现的连接mssql数据库操作示例
Aug 17 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
Python的UTC时间转换讲解
Feb 26 Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 Python
Python tcp传输代码实例解析
Mar 18 Python
Python面向对象魔法方法和单例模块代码实例
Mar 25 Python
什么是Python中的匿名函数
Jun 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
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
2011/03/30 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
Angular.js中上传指令ng-upload的基本使用教程
2017/07/30 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
JSON的parse()方法介绍
2019/01/31 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
node.js通过url读取文件
2020/10/16 Javascript
Python的高级Git库 Gittle
2014/09/22 Python
Python中字典和JSON互转操作实例
2015/01/19 Python
详解Python的Django框架中的Cookie相关处理
2015/07/22 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
python实现取余操作的简单实例
2020/08/16 Python
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
英国著名书店:Foyles
2018/12/01 全球购物
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
医学护理系毕业生求职信
2013/10/01 职场文书
银行授权委托书格式
2014/10/10 职场文书
实习介绍信模板
2015/01/30 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
2015年护士节活动总结
2015/02/10 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
法制教育观后感
2015/06/17 职场文书
python实现黄金分割法的示例代码
2021/04/28 Python
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
Nginx缓存设置案例详解
2021/09/15 Servers
Go gorilla/sessions库安装使用
2022/08/14 Golang