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 23 Python
Python中优化NumPy包使用性能的教程
Apr 23 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 Python
python数据处理之如何选取csv文件中某几行的数据
Sep 02 Python
pandas factorize实现将字符串特征转化为数字特征
Dec 19 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
Feb 17 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
Mar 02 Python
selenium判断元素是否存在的两种方法小结
Dec 07 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实现文件下载(支持中文文名)
2013/12/04 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
javascript第一课
2007/02/27 Javascript
javascript 模拟点击广告
2010/01/02 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
js中async函数结合promise的小案例浅析
2019/04/14 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python可变参数函数用法实例
2015/07/07 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
wxPython实现文本框基础组件
2019/11/18 Python
python数据抓取3种方法总结
2021/02/07 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
Myprotein丹麦官网:欧洲第一运动营养品牌
2019/04/15 全球购物
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
应届护士推荐信
2013/11/16 职场文书
平安建设实施方案
2014/03/19 职场文书
材料物理专业求职信
2014/09/01 职场文书
销售开票员岗位职责
2015/04/15 职场文书
2016年员工年度考核评语
2015/12/02 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python