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 08 Python
Python如何快速上手? 快速掌握一门新语言的方法
Nov 14 Python
快速查询Python文档方法分享
Dec 27 Python
python模仿网页版微信发送消息功能
Feb 24 Python
python 平衡二叉树实现代码示例
Jul 07 Python
python的移位操作实现详解
Aug 21 Python
解析Python3中的Import
Oct 13 Python
python多线程使用方法实例详解
Dec 30 Python
python中提高pip install速度
Feb 14 Python
通俗讲解python 装饰器
Sep 07 Python
pytorch 移动端部署之helloworld的使用
Oct 30 Python
python基础之//、/与%的区别详解
Jun 10 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 PDO函数库详解
2010/04/27 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
网页里控制图片大小的相关代码
2006/06/25 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
python的常见命令注入威胁
2013/02/18 Python
介绍Python中的文档测试模块
2015/04/28 Python
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
python使用mysql数据库示例代码
2017/05/21 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
Python3.5运算符操作实例详解
2019/04/25 Python
Django时区详解
2019/07/24 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
python实现移动木板小游戏
2020/10/09 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
运动会解说词50字
2014/01/18 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
学校中秋节活动总结
2015/03/23 职场文书
thinkphp 获取控制器及控制器方法
2021/04/16 PHP
Python 如何解决稀疏矩阵运算
2021/05/26 Python
Vue操作Storage本地化存储
2022/04/29 Vue.js