From 38b74e64f1dad5d43681d17090a8852140006ce7 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 27 Jan 2026 14:33:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96get=5Fpaper=5Fmeta=5F?= =?UTF-8?q?from=5Fopenalex?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/resm/tasks.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/resm/tasks.py b/apps/resm/tasks.py index 3ae2705..1d07370 100644 --- a/apps/resm/tasks.py +++ b/apps/resm/tasks.py @@ -12,6 +12,7 @@ from lxml import etree from django.conf import settings import os from celery import current_app +from datetime import datetime config.email = "caoqianming@foxmail.com" config.max_retries = 0 @@ -20,7 +21,7 @@ config.retry_http_codes = [429, 500, 503] config.api_key = "4KJZdkCFA0uFb6IsYKc8cd" @shared_task(base=CustomTask) -def get_paper_meta_from_openalex(publication_year:int, search_key:str, end_year:int=2026): +def get_paper_meta_from_openalex(publication_year:int, search_key:str, end_year:int=None): cache_key = f"openalex_cursor_{publication_year}_{search_key}" cache_cursor = cache.get(cache_key, "*") pager = Works().filter( @@ -59,8 +60,17 @@ def get_paper_meta_from_openalex(publication_year:int, search_key:str, end_year: papers.append(paper) Paper.objects.bulk_create(papers, ignore_conflicts=True) cache.set(cache_key, next_cursor, timeout=None) + if end_year is None: + end_year = datetime.now().year if publication_year + 1 <= end_year: - get_paper_meta_from_openalex.delay(publication_year + 1, search_key, end_year) + current_app.send_task( + "apps.resm.tasks.get_paper_meta_from_openalex", + kwargs={ + "publication_year": publication_year + 1, + "search_key": search_key, + "end_year": end_year + } + ) ELSEVIER_APIKEY = 'aa8868cac9e27d6153ab0a0acd7b50bf'