From 689fcfc6fe91a79072c9af14c21d816ee6c790fc Mon Sep 17 00:00:00 2001 From: Floke Date: Fri, 18 Jul 2025 14:55:21 +0000 Subject: [PATCH] data_processor.py aktualisiert --- data_processor.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/data_processor.py b/data_processor.py index 53d8c1c8..a4feeca8 100644 --- a/data_processor.py +++ b/data_processor.py @@ -2421,6 +2421,39 @@ class DataProcessor: self.logger.info( f"Website-Scraping (Batch) abgeschlossen. {processed_count} Zeilen verarbeitet, {skipped_count} Zeilen uebersprungen.") + def _scrape_raw_text_task(self, task_info, scrape_function): + """ + Worker-Funktion, die von jedem Thread im ThreadPoolExecutor ausgeführt wird. + Ruft die übergebene Scraping-Funktion (get_website_raw) auf. + Gibt IMMER ein Dictionary zurück, um Abstürze zu vermeiden. + """ + url = task_info.get('url') + row_num = task_info.get('row_num') + self.logger.debug(f" -> Scrape Task gestartet für Zeile {row_num}: {url}") + + try: + # Hier rufen wir die gehärteten Helper-Funktionen auf + raw_text_result = get_website_raw(url) + meta_details_result = scrape_website_details(url) + + # Gib immer ein Dictionary mit den Ergebnissen zurück + return { + 'row_num': row_num, + 'raw_text': raw_text_result, + 'meta_details': meta_details_result, + 'error': None + } + except Exception as e: + # Dieser Block ist ein zusätzliches Sicherheitsnetz, falls die Helper doch abstürzen + self.logger.error(f"FATALER FEHLER im Scraping Worker für Zeile {row_num}: {e}", exc_info=True) + return { + 'row_num': row_num, + 'raw_text': f'k.A. (FATALER WORKER FEHLER: {e})', + 'meta_details': 'k.A.', + 'error': True + } + + def process_summarization_batch( self, start_sheet_row=None,