From 3afdbc995c8a1de121b0c250886f4ed80b253a2d Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 29 Jan 2026 11:02:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20429=E6=97=B6=E7=AD=89=E5=BE=85=E4=B8=80?= =?UTF-8?q?=E4=BC=9A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/resm/tasks.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/resm/tasks.py b/apps/resm/tasks.py index 13ef793..e0f8305 100644 --- a/apps/resm/tasks.py +++ b/apps/resm/tasks.py @@ -316,10 +316,12 @@ def download_pdf(paper_id): # 设置处理中标记,防止并发重复处理 cache.set(cache_key, True, timeout=3600) + current_from = "oa_url" msg = save_pdf_from_oa_url(paper) if paper.has_fulltext_pdf is False: + current_from = "openalex" msg = save_pdf_from_openalex(paper) - return msg + return msg, current_from def save_pdf_from_oa_url(paper:Paper): @@ -345,7 +347,7 @@ def save_pdf_from_oa_url(paper:Paper): paper.save(update_fields=["has_fulltext", "has_fulltext_pdf", "fetch_status", "update_time"]) return "success" -def save_pdf_from_openalex(paper:Paper): +def save_pdf_from_openalex(paper:Paper, retry=1): # 尝试openalex下载 try: res = requests.get(url=f"https://content.openalex.org/works/{paper.openalex_id}.pdf", @@ -363,8 +365,10 @@ def save_pdf_from_openalex(paper:Paper): paper.save(update_fields=["has_fulltext", "has_fulltext_pdf", "fetch_status", "update_time"]) return "success" elif res.status_code == 429: - time.sleep(random.randint(1, 10)) - return save_pdf_from_openalex(paper) + if retry > 1: + time.sleep(random.randint(1, 10)) + retry -= 1 + return save_pdf_from_openalex(paper, retry=retry) # https://sci.bban.top/pdf/10.1016/j.conbuildmat.2020.121016.pdf?download=true \ No newline at end of file