如何在Python中的get请求中添加超时

hrysbysz  于 2023-03-31  发布在  Python
关注(0)|答案(2)|浏览(159)

我有一个下面的代码查询一个URL:

import requests

r = requests.get(url="<url>", timeout=(3, 6))
if "File Not Found in Database" in r.text:
    print("Incorrect URL")
else:
    print("Correct URL")

它正在对URL进行GET调用。如果URL正确,则下载文件,否则它会显示错误File Not Found in Database。当URL正确时,我不需要下载文件,但我只想检查URL是否正确。所以我想添加超时,因为如果URL不正确,它将抛出错误File Not Found in Database,但如果其正确,我只是想超时并打印正确的URL。但看起来这个超时不起作用,或者可能我做错了什么。
谢谢

bzzcjhmw

bzzcjhmw1#

您可以使用以下异常处理超时:

import requests

url = "<url>"
try:
    r = requests.get(url=url, timeout=(3, 6))
    if "File Not Found in Database" in r.text:
        print("Incorrect URL")
    else:
        print("Correct URL")
except requests.exceptions.Timeout:
    print("The request timed out.")
0aydgbwb

0aydgbwb2#

您可以使用HEAD HTTP方法来检查文件是否存在,而无需下载它。HEAD方法与GET类似,但它只返回头信息,而不是实际内容。

import requests

url = "<URL>"

response = requests.head(url)

if response.status_code == 200:
    print("File exists.")
elif response.status_code == 404:
    print("File not found.")
else:
    print(f"An unexpected status code was returned: {response.status_code}")

这并不完全适用于“向请求添加超时”,但它可以更好地实现您的目标。
IMO这才是最重要的。

相关问题