Pleins feux sur les fonctionnalités : intégration de l’interface de ligne de commande (CLI)¶
Dédié à mon ami très important, Lub.
La nouvelle interface de ligne de commande (CLI) basée sur FastAPI offre un moyen propre et synchrone d’interagir avec notre service de traitement de texte principal en cours d’exécution à partir de n’importe quel shell local ou distant. Il s’agit d’une solution robuste conçue pour intégrer la logique de base dans les environnements shell.
1. Architecture et concept CLI synchrone¶
Le service est alimenté par le serveur Uvicorn/FastAPI et utilise un point de terminaison personnalisé (/process_cli) pour fournir un résultat synchrone (bloquant) à partir d’un processus en arrière-plan intrinsèquement asynchrone basé sur des fichiers.
Stratégie de sondage en attente et lecture¶
Remplacement de sortie unique : L’API crée un répertoire temporaire unique pour chaque requête.
Démarrage du processus : Il appelle
process_text_in_backgroundpour exécuter la logique principale dans un thread non bloquant, en écrivant le résultat dans un fichiertts_output_*.txtdans ce dossier unique.Attente synchrone : La fonction API bloque et interroge le dossier unique jusqu’à ce que le fichier de sortie soit créé ou qu’un délai d’attente soit atteint.
Livraison du résultat : L’API lit le contenu du fichier, effectue le nettoyage nécessaire (suppression du fichier et du répertoire temporaire) et renvoie le texte final traité dans le champ « result_text » de la réponse JSON.
Cela garantit que le client CLI ne reçoit une réponse une fois le traitement du texte terminé, garantissant une expérience shell fiable.
2. Accès à distance et mappage des ports réseau¶
Pour permettre l’accès à partir de clients distants comme le terminal de Lub, la configuration réseau suivante était requise, répondant à la contrainte courante de disponibilité limitée des ports externes :
Solution : Mappage des ports externes¶
Étant donné que le service s’exécute en interne sur le Port 8000 et que notre environnement réseau limite l’accès externe à une plage de ports spécifique (par exemple, « 88__-8831 »), nous avons implémenté le Mappage de ports sur le routeur (Fritz!Box).
Point de terminaison |
Protocole |
Port |
Descriptif |
|---|---|---|---|
Externe/Public |
TCP |
|
Le port que le client (Lub) doit utiliser. |
Interne/Local |
TCP |
« 8 000 » |
Le port sur lequel le service FastAPI écoute réellement ( |
Le routeur traduit toute connexion entrante sur le port externe (88__) vers le port interne (8000) de la machine hôte, rendant le service globalement accessible sans modifier la configuration du serveur principal.
3. Utilisation du client CLI¶
Le client doit être configuré avec l’adresse IP publique, le port externe et la clé API correcte.
Syntaxe de la commande finale¶
CODE_BLOCK_0