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每天必学之bytes字节
Jan 28 Python
磁盘垃圾文件清理器python代码实现
Aug 24 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 Python
Flask框架使用DBUtils模块连接数据库操作示例
Jul 20 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
Python Django Vue 项目创建过程详解
Jul 29 Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
详解Python设计模式之策略模式
Jun 15 Python
详解如何使用Pytest进行自动化测试
Jan 14 Python
单身狗福利?Python爬取某婚恋网征婚数据
Jun 03 Python
Pytorch distributed 多卡并行载入模型操作
Jun 05 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编程效率 引入缓存机制提升性能
2010/02/15 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
JavaScript中eval()函数用法详解
2015/12/14 Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
2015/12/16 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
2016/06/21 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
Python get获取页面cookie代码实例
2018/09/12 Python
python实现彩色图转换成灰度图
2019/01/15 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
python 遍历pd.Series的index和value
2019/11/26 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
上班打牌检讨书
2014/02/07 职场文书
环保倡议书格式范文
2014/05/14 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
聚会通知怎么写
2015/04/23 职场文书
新闻稿格式范文
2015/07/18 职场文书
毕业班工作总结
2015/08/10 职场文书
MySQL空间数据存储及函数
2021/09/25 MySQL
解决 Redis 秒杀超卖场景的高并发
2022/04/12 Redis