如何解决使用 Python 请求来取消缩短网址 - 慢与 pycurl 相比
这是关于取消缩短网址以显示最终网址。
我一直在使用 pycurl,并且实时查找(例如)~80 个 url 需要 ~24 秒。
使用下面的简单请求代码,查找相同的 ~80 个 url 需要 ~55 秒
(我对不同的 url 集进行了多次运行,请求 总是 花费大约两倍的时间来进行查找)
我的 pycurl 代码如下所示:
conn = pycurl.Curl()
conn.setopt(pycurl.CAINFO,certifi.where())
conn.setopt(pycurl.FOLLOWLOCATION,True)
conn.setopt(pycurl.MAXREDirs,10)
conn.setopt(pycurl.CUSTomrEQUEST,"HEAD")
conn.setopt(pycurl.TIMEOUT,3)
conn.setopt(pycurl.NOBODY,True)
conn.setopt(pycurl.SSL_VERIFYHOST,0)
def pycurl_lookup(url):
try:
conn.setopt(pycurl.URL,url)
conn.perform()
real_url = conn.getinfo(pycurl.EFFECTIVE_URL)
print(real_url)
except pycurl.error as pce:
print(pce,url,conn.getinfo(pycurl.HTTP_CODE))
我的请求代码很简单:
def requests_lookup(url):
session = requests.Session()
session.max_redirects = 10
try:
reply = session.head(url,allow_redirects=True,timeout=3)
real_url = reply.url
print(real_url)
except (requests.Timeout,requests.TooManyRedirects) as rte:
print(rte)
有什么办法可以加快请求版本的速度,还是 pycurl 出于某种原因只是更快?
为了完整起见,我会注意到将会话设置移到请求函数定义之外会显着减少延迟(我一如既往的糟糕编码)但它仍然比 pycurl 慢 40% 左右
session = requests.Session()
session.max_redirects = 10
def requests_lookup(url):
session = requests.Session()
session.max_redirects = 10
try:
reply = session.head(url,requests.TooManyRedirects) as rte:
print(rte)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。