Python基于ThreadingTCPServer创建多线程代理的方法示例


Posted in Python onJanuary 11, 2018

本文实例讲述了Python基于ThreadingTCPServer创建多线程代理的方法。分享给大家供大家参考,具体如下:

#coding=utf8
from BaseHTTPServer import BaseHTTPRequestHandler
from SocketServer import ThreadingTCPServer
import gzip
from StringIO import StringIO
import logging
logging.basicConfig(level=logging.DEBUG,
        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
        datefmt='%a, %d %b %Y %H:%M:%S',
        filename='proxy.log',
        filemode='w')
class proxyHandler(BaseHTTPRequestHandler):
  def do_POST(self):
    while True:
      try:
        path = self.path
        if path.split("/")[-1] =="statistics":
          #获取post提交的数据
          datas =gzip.GzipFile(fileobj=StringIO(self.rfile.read())).read()
          self.wfile.write(datas)
          logging.debug(datas)
          print datas
      except Exception,e:
        logging.error(e)
      finally:
        self.finish()
  def do_CONNECT(self):
    pass
  def do_GET(self):
    pass
def test():
  host='127.0.0.1'
  port=8888
  try:
    server = ThreadingTCPServer((host, port), proxyHandler)
    print 'Welcome to the Server HTTP On %s Port %d...' %(host,port)
    server.serve_forever()
  except KeyboardInterrupt,e:
    logging.error(e)
    #print '^C received, shutting down server'
    server.socket.close()
if __name__ == '__main__':
  test()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
解析Python中的__getitem__专有方法
Jun 27 Python
Python使用matplotlib绘制三维图形示例
Aug 25 Python
Flask之请求钩子的实现
Dec 23 Python
Python3最长回文子串算法示例
Mar 04 Python
Python玩转PDF的各种骚操作
May 06 Python
对Django 中request.get和request.post的区别详解
Aug 12 Python
python cv2在验证码识别中应用实例解析
Dec 25 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 Python
wxpython自定义下拉列表框过程图解
Feb 14 Python
python logging.basicConfig不生效的原因及解决
Feb 20 Python
Python3使用xlrd、xlwt处理Excel方法数据
Feb 28 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
Feb 29 Python
python实现员工管理系统
Jan 11 #Python
Python使用base64模块进行二进制数据编码详解
Jan 11 #Python
Python实现备份MySQL数据库的方法示例
Jan 11 #Python
教你用Python写安卓游戏外挂
Jan 11 #Python
python实现学生管理系统
Jan 11 #Python
linecache模块加载和缓存文件内容详解
Jan 11 #Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
Jan 11 #Python
You might like
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
更换select下拉菜单背景样式的实现代码
2011/12/20 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
Vue和React有哪些区别
2020/09/12 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
Python类的专用方法实例分析
2015/01/09 Python
python连接MySQL数据库实例分析
2015/05/12 Python
Python 操作文件的基本方法总结
2017/08/10 Python
Python内置模块turtle绘图详解
2017/12/09 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
会计系毕业求职信
2014/08/07 职场文书
部门2014年度工作总结
2014/11/12 职场文书
教师师德表现自我评价
2015/03/05 职场文书
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android
Go语言基础map用法及示例详解
2021/11/17 Golang