Maison  >  Article  >  développement back-end  >  Comment capturer et diffuser la sortie standard en temps réel pour l'exécution des commandes Chatbot ?

Comment capturer et diffuser la sortie standard en temps réel pour l'exécution des commandes Chatbot ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-02 04:57:301005parcourir

How to Capture and Stream stdout in Real Time for Chatbot Command Execution?

Capturer la sortie standard en temps réel à partir de l'exécution des commandes

Dans le domaine du développement de chatbots capables d'exécuter des commandes, une exigence courante est la capacité de récupérer et afficher la sortie standard (stdout) des scripts exécutés dans l'interface de discussion. Cependant, des défis surviennent lorsque l'on tente de récupérer la sortie standard en temps réel.

Le problème réside dans l'approche traditionnelle, qui collecte toute la sortie standard et la renvoie sous la forme d'une réponse unique. Pour surmonter ce problème, nous avons besoin d'un moyen de capturer et de diffuser en continu la sortie standard pendant l'exécution du script.

Une solution consiste à utiliser des canaux pour faciliter la communication en temps réel entre le script et le canal de discussion. Voici un extrait de code Python qui montre comment procéder :

<code class="python">import os
import subprocess

def reboot(command):
    process = subprocess.Popen(command, stdout=subprocess.PIPE, universal_newlines=True)
    for line in process.stdout:
        yield line

if __name__ == "__main__":
    command = ["python", "test.py"]
    for line in reboot(command):
        print(line)</code>

Dans ce code, la fonction subprocess.Popen() est utilisée pour exécuter la commande spécifiée. Le paramètre stdout est défini sur subprocess.PIPE pour créer un canal pour la sortie stdout. L'argument universal_newlines=True garantit que la sortie est renvoyée au format texte plutôt qu'en octets.

La boucle for parcourt les lignes de la sortie stdout en temps réel, vous permettant de les diffuser dans le canal de discussion. Cette approche fournit une méthode continue de capture et d'affichage de la sortie standard, répondant aux exigences d'exécution en temps réel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn