修改BUG:http请求过多导致服务器防火墙拒绝连接
This commit is contained in:
21
Tools.py
21
Tools.py
@@ -1,5 +1,8 @@
|
||||
import imagehash, configparser, requests, os, logging, re
|
||||
import imagehash, configparser, os, logging, re
|
||||
from PIL import Image
|
||||
import requests
|
||||
from requests.adapters import HTTPAdapter
|
||||
from urllib3.util.retry import Retry
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read('config.cfg')
|
||||
@@ -105,6 +108,7 @@ def download_image(_qqnumber):
|
||||
:param _qqnumber: QQ号
|
||||
:return: 成功:1 失败:0
|
||||
"""
|
||||
logging.debug(f'下载的QQ号是: {_qqnumber}')
|
||||
if not os.path.exists('img'):
|
||||
os.makedirs('img')
|
||||
|
||||
@@ -112,8 +116,19 @@ def download_image(_qqnumber):
|
||||
image_url = f'https://q1.qlogo.cn/g?b=qq&nk={_qqnumber}&s=0'
|
||||
image_name = os.path.join('img', f'{_qqnumber}.jpg')
|
||||
|
||||
# 发送请求获取图片
|
||||
response = requests.get(image_url)
|
||||
# 创建一个会进行重试的适配器
|
||||
session = requests.Session()
|
||||
retry = Retry(
|
||||
total=5, # 最多重试3次
|
||||
backoff_factor=1, # 每次重试的等待时间增加
|
||||
status_forcelist=[500, 502, 503, 504], # 针对这些HTTP状态码才重试
|
||||
)
|
||||
adapter = HTTPAdapter(max_retries=retry)
|
||||
session.mount('https://', adapter)
|
||||
session.mount('http://', adapter)
|
||||
|
||||
# 使用session发送请求
|
||||
response = session.get(image_url, timeout=10) # 设置超时时间为10秒
|
||||
|
||||
if response.status_code == 200:
|
||||
# 保存图片
|
||||
|
||||
Reference in New Issue
Block a user