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

yipeiwu_com6年前Python基础

本文实例讲述了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 Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

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

相关文章

python分布式环境下的限流器的示例

项目中用到了限流,受限于一些实现方式上的东西,手撕了一个简单的服务端限流器。 服务端限流和客户端限流的区别,简单来说就是: 1)服务端限流 对接口请求进行限流,限制的是单位时间内请求的数...

django多文件上传,form提交,多对多外键保存的实例

需求: 需要实现一个用户反馈的接口,用户通过接口提交: 1.一段文字 2. 一个log文件 3. 多个图片 找了很多ModelForm,DRF-Serializer的资料,都没找到简单好...

pandas apply 函数 实现多进程的示例讲解

pandas apply 函数 实现多进程的示例讲解

前言: 在进行数据处理的时候,我们经常会用到 pandas 。但是 pandas 本身好像并没有提供多进程的机制。本文将介绍如何来自己实现 pandas (apply 函数)的多进程执行...

Python多线程threading模块用法实例分析

Python多线程threading模块用法实例分析

本文实例讲述了Python多线程threading模块用法。分享给大家供大家参考,具体如下: 多线程 - threading python的thread模块是比较底层的模块,python...

Python函数中定义参数的四种方式

Python中函数参数的定义主要有四种方式: 1. F(arg1,arg2,…) 这是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的函数在调用的的时...