微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Python 请求来取消缩短网址 - 慢与 pycurl 相比

如何解决使用 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 举报,一经查实,本站将立刻删除。