Dunevhhhh commited on
Commit
f0532c5
·
verified ·
1 Parent(s): d772b14

Create scheduler.py

Browse files
Files changed (1) hide show
  1. scheduler.py +44 -0
scheduler.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # scheduler.py (erweitert)
2
+ from apscheduler.schedulers.asyncio import AsyncIOScheduler
3
+ from apscheduler.triggers.interval import IntervalTrigger
4
+ from config import SETTINGS, load_feeds
5
+ import logging
6
+
7
+ logger = logging.getLogger(__name__)
8
+
9
+ class NewsScheduler:
10
+ def __init__(self):
11
+ self.scheduler = AsyncIOScheduler()
12
+ self.processed_links = set()
13
+ self.max_history = 1000
14
+
15
+ def cleanup_processed_links(self):
16
+ # Verhindere, dass die Menge zu groß wird
17
+ if len(self.processed_links) > self.max_history:
18
+ self.processed_links = set(list(self.processed_links)[-self.max_history:])
19
+
20
+ async def job_wrapper(self):
21
+ try:
22
+ await process_and_send_news()
23
+ self.cleanup_processed_links()
24
+ except Exception as e:
25
+ logger.error(f"Scheduler-Job fehlgeschlagen: {str(e)}")
26
+
27
+ def start(self):
28
+ feeds = load_feeds()
29
+ # Dynamische Job-Erstellung basierend auf Feed-Konfiguration
30
+ for feed in feeds:
31
+ trigger = IntervalTrigger(
32
+ minutes=feed.get("interval", SETTINGS["check_interval"])
33
+ self.scheduler.add_job(
34
+ self.job_wrapper,
35
+ trigger=trigger,
36
+ kwargs={"feed": feed},
37
+ max_instances=3
38
+ )
39
+ self.scheduler.start()
40
+ logger.info("Scheduler gestartet mit %d Jobs", len(self.scheduler.get_jobs()))
41
+
42
+ async def process_and_send_news(feed=None):
43
+ # Implementierung hier
44
+ pass