Implements a Flask microservice that receives entities from SpaCy and Exxeta services, merges them based on normalized text matching, and forwards validated results to coordinator. Also updates gunicorn configuration with timeout and worker settings. |
||
|---|---|---|
| .. | ||
| .env.template | ||
| README.md | ||
| app.py | ||
| merge_logic.py | ||
| requirements.txt | ||
| validate_logic.py | ||
README.md
Validate Service
Ein Flask-basierter Microservice zur asynchronen Verarbeitung und Validierung von Entitäten aus zwei verschiedenen NLP-Services (SpaCy und Exxeta).
Funktionsweise
Das Service empfängt für jede eindeutige ID zwei POST-Requests von verschiedenen Services:
- SpaCy Service - sendet extrahierte Entitäten
- Exxeta Service - sendet extrahierte Entitäten
Beim ersten Request werden die Daten zwischengespeichert. Beim zweiten Request startet die asynchrone Verarbeitung. Nach der Verarbeitung werden die Ergebnisse an einen nachgelagerten Service weitergeleitet.
API Endpoints
POST /validate
Empfängt Entitätsdaten von SpaCy oder Exxeta Services.
Request Body:
{
"id": "pitch_book_id",
"service": "spacy|exxeta",
"entities": [
{
"label": "PERSON",
"entity": "Max Mustermann",
"page": 1
}
]
}
Response:
- 200: Daten erfolgreich verarbeitet
- 400: Fehlende oder ungültige Parameter
- 500: Serverfehler
Installation und Start
- Abhängigkeiten installieren:
pip install -r requirements.txt
- Service starten:
python app.py
Das Service läuft standardmäßig auf http://localhost:5050
Konfiguration
Umgebungsvariablen in config.py:
COORDINATOR_URL: URL des Koordinators
Verarbeitungslogik
- Zwischenspeicherung: Beim ersten Request wird das JSON in einem Thread-sicheren Dictionary gespeichert
- Trigger: Beim zweiten Request wird die asynchrone Verarbeitung gestartet
- Merge & Validate: Die
merge_and_validate_entitiesFunktion führt die Validierung durch:- Normalisiert Entitäten (entfernt Zeilenumbrüche, konvertiert zu lowercase)
- Matched Entitäten basierend auf Label, normalisiertem Text und Seitenzahl
- Kennzeichnet Entitäten als "validated" (beide Services) oder "single-source"
- Weiterleitung: Ergebnisse werden an den nächsten Service gesendet
- Cleanup: Verarbeitete Daten werden aus dem Speicher entfernt
Architektur
┌─────────────────┐ ┌─────────────────┐
│ SpaCy Service │ │ Exxeta Service │
└─────────┬───────┘ └─────────┬───────┘
│ │
│ POST /validate │ POST /validate
│ (service_type:spacy) │ (service_type:exxeta)
▼ ▼
┌─────────────────────────────────────┐
│ Validate Service │
│ ┌─────────────────────────────┐ │
│ │ Zwischenspeicher │ │
│ │ (Thread-safe Dictionary) │ │
│ └─────────────────────────────┘ │
│ ┌─────────────────────────────┐ │
│ │ Asynchrone Verarbeitung │ │
│ │ (merge_and_validate_entities)│ │
│ └─────────────────────────────┘ │
└─────────────┬───────────────────────┘
│
│ POST (processed data)
▼
┌─────────────────────────────┐
│ Nachgelagerter Service │
└─────────────────────────────┘