如何最简单地检查指定URL的请求响应是否成功
同步URL请求状态检测函数实现
实现依赖
使用Python的requests库完成同步HTTP请求,使用前需先安装依赖:
pip install requests
核心函数代码
import requests from requests.exceptions import RequestException, Timeout, ConnectionError def check_url_status(url: str, timeout: int = 5) -> tuple[bool, int|None]: """ 同步检测指定URL的请求状态 :param url: 待检测的目标URL :param timeout: 请求超时时间,单位秒,默认5秒 :return: 第一个返回值为布尔值代表请求是否成功,第二个为HTTP状态码(异常场景返回None) """ try: # 用HEAD请求仅获取响应头,减少资源消耗 response = requests.head(url, timeout=timeout, allow_redirects=True) # 2xx状态码均判定为成功,可根据业务需求调整判定逻辑 return 200 <= response.status_code < 300, response.status_code except (Timeout, ConnectionError): return False, None except RequestException: return False, None
使用示例
示例说明:请求
https://api.com/articles/1时,响应返回200状态码代表请求成功;返回404状态码则代表出现错误。
# 测试调用 target_url = "https://api.com/articles/1" is_success, status_code = check_url_status(target_url) if is_success: print(f"请求成功,状态码:{status_code}") else: if status_code: print(f"请求失败,状态码:{status_code}") else: print("请求失败:网络异常/请求超时/域名解析失败")
自定义调整说明
- 如果需要获取完整响应内容,可将
requests.head替换为requests.get - 可修改状态码判定规则,比如仅判定200为成功,调整
200 <= response.status_code < 300为response.status_code == 200即可 - 如需禁用自动跳转,将
allow_redirects参数设置为False即可
内容的提问来源于stack exchange,提问作者Patryk
相关产品推荐
相关产品推荐

