|
from apscheduler.schedulers.background import BackgroundScheduler |
|
from apscheduler.triggers.cron import CronTrigger |
|
import logging |
|
from datetime import datetime |
|
import os |
|
from tools.arxiv_tool import save_daily_papers |
|
|
|
|
|
logging.basicConfig( |
|
level=logging.INFO, |
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', |
|
handlers=[ |
|
logging.FileHandler('arxiv_scheduler.log'), |
|
logging.StreamHandler() |
|
] |
|
) |
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
def scheduled_paper_search(): |
|
"""Run the daily paper search and log the results.""" |
|
try: |
|
logger.info("Starting daily ArXiv paper search...") |
|
papers = save_daily_papers() |
|
logger.info(f"Found {len(papers)} new AI papers today") |
|
|
|
|
|
if papers: |
|
logger.info("Today's papers:") |
|
for paper in papers: |
|
logger.info(f"- {paper['title']}") |
|
|
|
except Exception as e: |
|
logger.error(f"Error in scheduled paper search: {str(e)}") |
|
|
|
def initialize_scheduler(): |
|
"""Initialize and start the scheduler.""" |
|
try: |
|
scheduler = BackgroundScheduler() |
|
|
|
|
|
scheduler.add_job( |
|
scheduled_paper_search, |
|
trigger=CronTrigger(hour=8, minute=0), |
|
id='daily_arxiv_search', |
|
name='Daily ArXiv AI Paper Search', |
|
replace_existing=True |
|
) |
|
|
|
|
|
scheduler.start() |
|
logger.info("Scheduler initialized and started") |
|
|
|
return scheduler |
|
except Exception as e: |
|
logger.error(f"Error initializing scheduler: {str(e)}") |
|
|
|
class DummyScheduler: |
|
def shutdown(self): pass |
|
return DummyScheduler() |