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中使用hashlib模块处理算法的教程
Apr 28 Python
python简单判断序列是否为空的方法
Jun 30 Python
Python编程实现控制cmd命令行显示颜色的方法示例
Aug 14 Python
Python内存管理方式和垃圾回收算法解析
Nov 11 Python
django反向解析和正向解析的方式
Jun 05 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
Python中Numpy mat的使用详解
May 24 Python
python多线程http压力测试脚本
Jun 25 Python
Python+threading模块对单个接口进行并发测试
Jun 25 Python
浅谈Python 命令行参数argparse写入图片路径操作
Jul 12 Python
python+playwright微软自动化工具的使用
Feb 02 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
用PHP实现的生成静态HTML速度快类库
2007/03/31 PHP
php生成二维码
2015/08/10 PHP
JQuery魔力之$("tagName")与selector
2012/03/05 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
javascript date格式化示例
2013/09/25 Javascript
javascript中Object使用详解
2015/01/26 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
three.js快速入门【推荐】
2017/01/21 Javascript
详解Angular-Cli中引用第三方库
2017/05/21 Javascript
vue params、query传参使用详解
2017/09/12 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
python函数不定长参数使用方法解析
2019/12/14 Python
Python文件操作方法详解
2020/02/09 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
CSS3实现点击放大的动画实例代码
2017/02/27 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
大学军训感言300字
2014/03/09 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
同学毕业留言寄语
2015/02/27 职场文书
学校推普周活动总结
2015/05/07 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书