0.1.7
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import os
|
||||
from re import T
|
||||
import time
|
||||
import aiohttp
|
||||
import asyncio
|
||||
@@ -39,38 +40,6 @@ def retry(max_retries: int = 3, delay: float = 1.0, backoff: float = 1.0):
|
||||
return decorator
|
||||
|
||||
|
||||
def async_retry(max_retries: int = 3, delay: float = 1.0, backoff: float = 1.0):
|
||||
"""
|
||||
支持异步函数的通用重试装饰器
|
||||
:param max_retries: 最大重试次数
|
||||
:param delay: 每次重试的初始延迟(秒)
|
||||
:param backoff: 每次重试延迟的递增倍数
|
||||
"""
|
||||
|
||||
def decorator(func):
|
||||
@wraps(func)
|
||||
async def wrapper(*args, **kwargs):
|
||||
retries = 0
|
||||
current_delay = delay
|
||||
while retries < max_retries:
|
||||
try:
|
||||
return await func(*args, **kwargs) # 直接执行原始方法
|
||||
except Exception as e:
|
||||
retries += 1
|
||||
if retries >= max_retries:
|
||||
logger.warning(f"函数 {func.__name__} 在尝试了 {max_retries} 次后失败,错误信息: {e}")
|
||||
return None # 重试次数用尽后返回 None
|
||||
logger.warning(f"正在重试 {func.__name__} {retries + 1}/{max_retries} 因错误: {e}")
|
||||
|
||||
await asyncio.sleep(current_delay) # 异步延迟
|
||||
current_delay *= backoff # 根据backoff递增延迟
|
||||
|
||||
return None # 三次重试仍未成功,返回 None
|
||||
|
||||
return wrapper
|
||||
|
||||
return decorator
|
||||
|
||||
|
||||
# 比特浏览器模块
|
||||
class BitBrowser:
|
||||
@@ -199,11 +168,11 @@ class BitBrowser:
|
||||
res = requests.post(url, json=data, headers=headers).json()
|
||||
if not res.get('success'):
|
||||
raise Exception(res)
|
||||
# 等待3秒
|
||||
time.sleep(3)
|
||||
bol = self.bit_browser_status(pk)
|
||||
if bol:
|
||||
# 等待5秒
|
||||
time.sleep(5)
|
||||
raise Exception(f'浏览器ID {pk} 未正常关闭')
|
||||
raise Exception(f'浏览器ID {pk} 未正常关闭, 等待3秒后重试')
|
||||
return True
|
||||
|
||||
# 删除比特币浏览器
|
||||
@@ -339,9 +308,14 @@ async def main():
|
||||
print(f'='*50)
|
||||
jc += 1
|
||||
|
||||
|
||||
|
||||
bit_browser = BitBrowser()
|
||||
def main2():
|
||||
bit = BitBrowser()
|
||||
browser_id = '5ba9eb974c7c45e2bb086585c75f70e8'
|
||||
# 关闭浏览器
|
||||
res = bit.bit_browser_close(browser_id)
|
||||
print(res)
|
||||
|
||||
# if __name__ == '__main__':
|
||||
# asyncio.run(main())
|
||||
# main2()
|
||||
|
||||
bit_browser = BitBrowser()
|
||||
Reference in New Issue
Block a user