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抓取模板之家的CSS模板
Mar 16 Python
Python简单获取自身外网IP的方法
Sep 18 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
Aug 25 Python
对django的User模型和四种扩展/重写方法小结
Aug 17 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
python3爬取torrent种子链接实例
Jan 16 Python
Python 实现一个计时器
Jul 28 Python
python 实现性别识别
Nov 21 Python
详解Python中string模块除去Str还剩下什么
Nov 30 Python
Jupyter Notebook添加代码自动补全功能的实现
Jan 07 Python
python 制作网站筛选工具(附源码)
Jan 21 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 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
一个显示天气预报的程序
2006/10/09 PHP
亲密接触PHP之PHP语法学习笔记1
2006/12/17 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
python实现kMeans算法
2017/12/21 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
Python文件操作方法详解
2020/02/09 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
浅析Python 序列化与反序列化
2020/08/05 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
高中学生干部学习的自我评价
2014/02/21 职场文书
年级组长自我鉴定
2014/02/22 职场文书
个人合作协议书范本
2014/04/18 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
董事长秘书工作总结
2015/08/14 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
PHP新手指南
2021/04/01 PHP
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL