优化图片上传功能,增加重试机制和超时设置,支持批量上传并发控制
This commit is contained in:
parent
a5dbe72fe9
commit
16192e00a2
@ -127,15 +127,17 @@ def download_images():
|
|||||||
else:
|
else:
|
||||||
messagebox.showwarning("警告", "没有图片被下载")
|
messagebox.showwarning("警告", "没有图片被下载")
|
||||||
|
|
||||||
def upload_image_to_lsky_pro(image_path):
|
def upload_image_to_lsky_pro(image_path, retries=3, timeout=30):
|
||||||
"""上传图片到Lsky Pro图床"""
|
"""上传图片到Lsky Pro图床,增加重试机制和超时设置"""
|
||||||
|
for attempt in range(retries):
|
||||||
|
try:
|
||||||
with open(image_path, 'rb') as img_file:
|
with open(image_path, 'rb') as img_file:
|
||||||
files = {'file': img_file}
|
files = {'file': img_file}
|
||||||
headers = {
|
headers = {
|
||||||
'Authorization': f'Bearer {token}',
|
'Authorization': f'Bearer {token}',
|
||||||
'Accept': 'application/json'
|
'Accept': 'application/json'
|
||||||
}
|
}
|
||||||
response = requests.post(f'{lsky_pro_url}{upload_endpoint}', files=files, headers=headers)
|
response = requests.post(f'{lsky_pro_url}{upload_endpoint}', files=files, headers=headers, timeout=timeout)
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
try:
|
try:
|
||||||
data = response.json()
|
data = response.json()
|
||||||
@ -143,6 +145,9 @@ def upload_image_to_lsky_pro(image_path):
|
|||||||
return data['data']['links']['url']
|
return data['data']['links']['url']
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
except requests.exceptions.RequestException as e:
|
||||||
|
print(f"上传失败,重试 {attempt + 1}/{retries}: {str(e)}")
|
||||||
|
time.sleep(3) # 重试前等待3秒
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
@ -309,24 +314,18 @@ def download_and_upload_images():
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
messagebox.showerror("错误", f"处理过程中出错: {str(e)}")
|
messagebox.showerror("错误", f"处理过程中出错: {str(e)}")
|
||||||
|
|
||||||
|
def upload_images_batch_files(file_paths, max_concurrent_uploads=5):
|
||||||
|
"""批量上传图片,限制并发上传数量"""
|
||||||
|
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||||
|
|
||||||
|
with ThreadPoolExecutor(max_workers=max_concurrent_uploads) as executor:
|
||||||
|
futures = {executor.submit(process_image_file, file_path): file_path for file_path in file_paths}
|
||||||
def upload_images_batch_files(file_paths):
|
for future in as_completed(futures):
|
||||||
# """ 你的图片上传逻辑(需自行实现) """
|
file_path = futures[future]
|
||||||
for file_path in file_paths:
|
try:
|
||||||
# 这里添加处理每个文件的逻辑
|
future.result()
|
||||||
if not file_path or not os.path.isfile(file_path):
|
except Exception as e:
|
||||||
messagebox.showwarning("警告", "请选择有效的Markdown文件。")
|
print(f"处理文件 {file_path} 时出错: {str(e)}")
|
||||||
return
|
|
||||||
|
|
||||||
print(f"Processing: {file_path}")
|
|
||||||
process_image_file(file_path)
|
|
||||||
|
|
||||||
# 示例:读取markdown文件内容
|
|
||||||
# with open(file_path, 'r') as f:
|
|
||||||
# content = f.read()
|
|
||||||
# 添加你的图片上传逻辑...
|
|
||||||
|
|
||||||
def select_files():
|
def select_files():
|
||||||
root = tk.Tk()
|
root = tk.Tk()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user