From dd72fb77d99a90d8bedde0e79506a2561f2b6b83 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Fri, 17 Jul 2026 15:00:18 +0800 Subject: [PATCH] perf(transfer): break on old mail instead of continue - newest-first scan --- unipay/providers/transfer.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/unipay/providers/transfer.py b/unipay/providers/transfer.py index 14f4d45..ecd9abc 100644 --- a/unipay/providers/transfer.py +++ b/unipay/providers/transfer.py @@ -176,7 +176,7 @@ class TransferGateway(Gateway): try: mail_date = parsedate_to_datetime(mail_date_str) if mail_date < cutoff: - continue + break # 从新到旧扫描,遇旧邮件停止 except: continue else: @@ -265,19 +265,16 @@ class TransferGateway(Gateway): idx = str(i) mail_date_str = getattr(mail, 'date', None) - skip_date = False if mail_date_str: try: mail_date = parsedate_to_datetime(mail_date_str) if mail_date < cutoff: - skip_date = True + debug('mail[' + idx + '] date=' + str(mail_date_str) + ' older than 2 days, stop scanning') + break # 从新到旧扫描,遇到旧邮件后面都更旧 except Exception as de: debug('mail[' + idx + '] date parse error: ' + str(mail_date_str) + ' -> ' + str(de)) else: - debug('mail[' + idx + '] no date header, skipping date filter') - skip_date = True # 没有日期头的邮件跳过 - if skip_date: - debug('mail[' + idx + '] date=' + str(mail_date_str) + ' older than 2 days or no date, skip') + debug('mail[' + idx + '] no date header, skip') continue from_addr = getattr(mail, 'mailfrom', '?')