From 85c6154ada106d95ec9cbc1edbdffc37654cc8b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A3=8E=E4=B9=8B=E5=87=8C=E6=AE=87?= Date: Wed, 17 Jul 2024 10:03:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B0=83=E6=95=B4=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=87=8D=E8=AF=95=E6=97=B6=E9=97=B4=EF=BC=8C=E6=9C=80=E7=9F=AD?= =?UTF-8?q?=E5=B0=9D=E8=AF=95=E5=AE=9E=E9=99=85=E6=94=B9=E4=B8=BA=E8=AE=BE?= =?UTF-8?q?=E5=AE=9A=E5=80=BC=E7=9A=84=E4=B8=80=E5=8D=8A=EF=BC=8C=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E9=9C=80=E8=A6=81=E9=AA=8C=E8=AF=81=E6=97=B6=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E8=BF=87=E7=9F=AD=E8=80=8C=E5=87=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- qq_login.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/qq_login.py b/qq_login.py index e77430da38..dc744b34db 100644 --- a/qq_login.py +++ b/qq_login.py @@ -1708,17 +1708,20 @@ def get_retry_data(self, retry_key: str, max_retry_count: int, max_retry_wait_ti if max_retry_count == 1: retry_timeouts = [max_retry_wait_time] elif max_retry_count > 1: - # 默认重试时间为按时长等分递增 + # 默认重试时间为[t/2, t]按时长等分递增 + half_time = max_retry_wait_time / 2 retry_timeouts = list( - idx / max_retry_count * max_retry_wait_time for idx in range_from_one(max_retry_count) + half_time + idx / max_retry_count * half_time for idx in range_from_one(max_retry_count) ) if login_retry_data.recommended_first_retry_timeout != 0: - # 如果有历史成功数据,则以推荐首次重试时间为第一次重试的时间,后续重试次数则等分递增 - retry_timeouts = [login_retry_data.recommended_first_retry_timeout] + # 如果有历史成功数据,则以推荐首次重试时间为第一次重试的时间(且至少不少于一半时间),后续重试次数则在[t/2, t]等分递增 + first_wait_time = max(login_retry_data.recommended_first_retry_timeout, half_time) + retry_timeouts = [first_wait_time] + remaining_retry_count = max_retry_count - 1 retry_timeouts.extend( list( - idx / remaining_retry_count * max_retry_wait_time + half_time + idx / remaining_retry_count * half_time for idx in range_from_one(remaining_retry_count) ) )