Ferocious0xide commited on
Commit
535c37e
·
verified ·
1 Parent(s): 66459aa

Create scheduler.py

Browse files
Files changed (1) hide show
  1. scheduler.py +60 -0
scheduler.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from apscheduler.schedulers.background import BackgroundScheduler
2
+ from apscheduler.triggers.cron import CronTrigger
3
+ import logging
4
+ from datetime import datetime
5
+ import os
6
+ from tools.arxiv_tool import save_daily_papers
7
+
8
+ # Configure logging
9
+ logging.basicConfig(
10
+ level=logging.INFO,
11
+ format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
12
+ handlers=[
13
+ logging.FileHandler('arxiv_scheduler.log'),
14
+ logging.StreamHandler()
15
+ ]
16
+ )
17
+
18
+ logger = logging.getLogger(__name__)
19
+
20
+ def scheduled_paper_search():
21
+ """Run the daily paper search and log the results."""
22
+ try:
23
+ logger.info("Starting daily ArXiv paper search...")
24
+ papers = save_daily_papers()
25
+ logger.info(f"Found {len(papers)} new AI papers today")
26
+
27
+ # Log paper titles
28
+ if papers:
29
+ logger.info("Today's papers:")
30
+ for paper in papers:
31
+ logger.info(f"- {paper['title']}")
32
+
33
+ except Exception as e:
34
+ logger.error(f"Error in scheduled paper search: {str(e)}")
35
+
36
+ def initialize_scheduler():
37
+ """Initialize and start the scheduler."""
38
+ try:
39
+ scheduler = BackgroundScheduler()
40
+
41
+ # Schedule the job to run at 8 AM every day
42
+ scheduler.add_job(
43
+ scheduled_paper_search,
44
+ trigger=CronTrigger(hour=8, minute=0),
45
+ id='daily_arxiv_search',
46
+ name='Daily ArXiv AI Paper Search',
47
+ replace_existing=True
48
+ )
49
+
50
+ # Start the scheduler
51
+ scheduler.start()
52
+ logger.info("Scheduler initialized and started")
53
+
54
+ return scheduler
55
+ except Exception as e:
56
+ logger.error(f"Error initializing scheduler: {str(e)}")
57
+ # Return a dummy scheduler object that does nothing
58
+ class DummyScheduler:
59
+ def shutdown(self): pass
60
+ return DummyScheduler()