feat: 恢复状态

This commit is contained in:
caoqianming 2026-01-29 18:08:32 +08:00
parent df7dbc6717
commit f922685561
1 changed files with 60 additions and 51 deletions

View File

@ -139,6 +139,12 @@ def get_abstract_from_elsevier(number_of_task:int = 20):
for paper in qs[:number_of_task]:
if not show_task_run(def_name):
break
original_status = paper.fetch_status
if original_status == "downloading":
return f"paper {paper.id} is already downloading"
paper.fetch_status = "downloading"
paper.save(update_fields=["fetch_status", "update_time"])
try:
try:
res = req.get(
f"https://api.elsevier.com/content/article/doi/{paper.doi}",
@ -193,6 +199,10 @@ def get_abstract_from_elsevier(number_of_task:int = 20):
elif res.status_code == 404:
paper.save_fail_reason("elsevier_doi_not_found")
finally:
if paper.fetch_status == "downloading":
paper.fetch_status = original_status
paper.save(update_fields=["fetch_status", "update_time"])
qs_count = qs.count()
if show_task_run(def_name) and qs_count > 0:
@ -315,8 +325,7 @@ def download_pdf(paper_id):
msg = save_pdf_from_openalex(paper)
return msg, current_from
finally:
# 出错时恢复到原状态
if paper.fetch_status == "downloading" and paper.has_fulltext_pdf is False:
if paper.fetch_status == "downloading":
paper.fetch_status = original_status
paper.save(update_fields=['fetch_status', 'update_time'])