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实现的阳历转阴历(农历)算法
Apr 25 Python
Python中设置变量访问权限的方法
Apr 27 Python
解决python2.7用pip安装包时出现错误的问题
Jan 23 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
python自动发邮件总结及实例说明【推荐】
May 31 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 Python
Python3.7 pyodbc完美配置访问access数据库
Oct 03 Python
使用python的pyplot绘制函数实例
Feb 13 Python
详解django使用include无法跳转的解决方法
Mar 19 Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 Python
python如何对链表操作
Oct 10 Python
教你用Python+selenium搭建自动化测试环境
Jun 18 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
一个ftp类(ini.php)
2006/10/09 PHP
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
php中jpgraph类库的使用介绍
2013/08/08 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
理解Javascript_08_函数对象
2010/10/15 Javascript
JQueryEasyUI Layout布局框架的使用
2013/04/08 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
[03:57]《不朽》——2015DOTA2国际邀请赛—中国军团出征主题曲MV
2015/07/15 DOTA
python编写暴力破解FTP密码小工具
2014/11/19 Python
python内存管理分析
2015/04/08 Python
python 写入csv乱码问题解决方法
2016/10/23 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
Python如何操作docker redis过程解析
2020/08/10 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
如何查看python关键字
2021/01/17 Python
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
春游踏青活动方案
2014/08/14 职场文书
中学生学习保证书
2015/02/26 职场文书
复兴之路观后感
2015/06/02 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
创业计划书之宠物店
2019/09/19 职场文书
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL