问题描述
这是关于取消缩短网址以显示最终网址。
我一直在使用 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 (将#修改为@)