多线程-http请求

  • 线程基类
import threading
class base_thread(threading.Thread):
    def __init__(self, func):
        threading.Thread.__init__(self)
        self.func = func
        #print(type(self.func))
    def run(self):
        self.func
  • http请求
#-*- coding: utf-8 -*-
import requests
import json
class ConfigHttp:
    def __init__(self, host, port,headers):
        self.host = host
        self.port = port
        self.headers = headers
    # 封装HTTP GET请求方法
    def get(self, url, params):
        # params = urllib.parse.urlencode(params)
        url = "http://"+self.host+":"+self.port+url
        try:
            r = requests.get(url, params=params, headers=self.headers)
            r.encoding = 'UTF-8'
            return r.text
        except Exception:
            print('no json data returned')
            return {}
    # 封装HTTP POST请求方法,支持上传图片
    def post(self, url, data, files=None):
        data = eval(data)
        url = 'http://' + self.host + ':' + str(self.port)+url
        r =requests.post(url, files=files, data=data)
        print(data)
        json_response = r.text
        return json_response
  • 简单调用,当然最好的方式是再次封装一层
import ConfigHttp   
def sample_request():
    headers= {'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:29.0) Gecko/20100101 Firefox/29.0'}
    cf = ConfigHttp(host="www.xxx.com",port=80,headers=headers)
    #cf.get(url="/api/getuserinfo",{"id":2})
    cf.get(url="/api/getuserinfo?id=2")
  • 多线程调用
def multi_thread():
    count = 100
    threads = []
    for i in range(0, 100):
        threads.append(base_thread(sample_request()))
    for j in range(0, 100):
        threads[j].start()
    for k in range(0, 100):
        threads[k].join()

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 116,535评论 15 132
  • 线程 引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0....
    不浪漫的浪漫_ea03阅读 114评论 0 0
  • 引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0.1秒,...
    chen_000阅读 111评论 0 0
  • 基础1.r''表示''内部的字符串默认不转义2.'''...'''表示多行内容3. 布尔值:True、False(...
    neo已经被使用阅读 1,140评论 0 5
  • 刚才看新闻才知道孙杨夺得了今年国际泳联游泳世锦赛的冠军,真是替他开心,一直都很喜欢他,看他参加综艺节目时就觉得这个...
    V加加布鲁根阅读 95评论 0 1