python模拟多线程http请求_Python多线程和HTTP请求

在开发Python后端web服务器时,为提高效率,使用多线程和队列实现每10秒150次API请求。通过创建线程池执行HTTP GET请求,但遇到线程处理延迟增加的问题。尽管API返回的延迟较小,线程处理整个请求的时间却显著增长。寻求解决方案以优化多线程性能。
摘要由CSDN通过智能技术生成

我正在开发一个Python后端web服务器,它从付费的第三方API获取实时数据。

我需要查询这个API非常快(大约每10秒150个查询)。因此,我创建了一个小的概念证明,生成200个线程并将url写入队列。然后,线程从队列中读取url并发送HTTP请求。第三方API返回一个名为delay的值,即服务器处理请求所用的时间。

下面是POC代码,它只下载所有url(而不是重复)。在_http_pool = urllib3.PoolManager()

def getPooledResponse(url):

return _http_pool.request("GET", url, timeout=30)

class POC:

_worker_threads = []

WORKER_THREAD_COUNT = 200

q = Queue.Queue()

@staticmethod

def worker():

while True:

url = POC.q.get()

t0 = datetime.datetime.now()

r = getPooledResponse(item)

print "thread %s took %d seconds to process the url (service delay %d)" % (threading.currentThread().ident, (datetime.datetime.now() - t0).seconds, getDelayFromResponse(r))

POC.q.task_done()

@staticmethod

def run

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值