gpt4 book ai didi

Python grequests 需要很长时间才能完成

转载 作者:行者123 更新时间:2023-12-04 18:09:34 25 4
gpt4 key购买 nike

我正在尝试缩短 urlSet 中的许多 URL。以下代码大部分时间都有效。但有时需要很长时间才能完成。例如,我在 urlSet 中有 2950。 stderr 告诉我 2900 已完成,但 getUrlMapping 未完成。

def getUrlMapping(urlSet):
# get the url mapping
urlMapping = {}
#rs = (grequests.get(u) for u in urlSet)
rs = (grequests.head(u) for u in urlSet)
res = grequests.imap(rs, size = 100)
counter = 0
for x in res:
counter += 1
if counter % 50 == 0:
sys.stderr.write('Doing %d url_mapping length %d \n' %(counter, len(urlMapping)))
urlMapping[ getOriginalUrl(x) ] = getGoalUrl(x)
return urlMapping

def getGoalUrl(resp):
url=''
try:
url = resp.url
except:
url = 'NULL'
return url

def getOriginalUrl(resp):
url=''
try:
url = resp.history[0].url
except IndexError:
url = resp.url
except:
url = 'NULL'
return url

最佳答案

可能它不会帮助你,因为它已经过去了很长时间,但仍然..

我在请求方面遇到了一些问题,与您遇到的问题类似。对我来说,问题是 Requests 需要很长时间才能下载一些页面,但是使用任何其他软件(浏览器、curl、wget、python 的 urllib)一切正常...

在浪费了很多时间之后,我注意到服务器正在发送一些无效的 header ,例如,在一个“慢速”页面中,在 Content-type: text/html 开始之后以 Header-name : header-value 的形式发送 header (注意冒号前的空格)。这以某种方式破坏了 Python 用于通过请求解析 HTTP header 的 email.header 功能,因此 Transfer-encoding: chunked header 未被解析。

长话短说:在请求内容之前手动将 Response 对象的 chunked 属性设置为 True 解决了这个问题。例如:

response = requests.get('http://my-slow-url')
print(response.text)

花了很长时间但是

response = requests.get('http://my-slow-url')
response.raw.chunked = True
print(response.text)

效果很好!

关于Python grequests 需要很长时间才能完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17743212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com