Maison > développement back-end > Golang > le corps du texte

Comment réaliser une capture Stdout en temps réel pour l'exécution de scripts dans un chatbot ?

Patricia Arquette
Libérer: 2024-11-01 07:50:30
original
170 Les gens l'ont consulté

How to Achieve Real-Time Stdout Capture for Script Execution in a Chat Bot?

Exécuter des commandes avec Real-Time Stdout Capture

Afin d'améliorer les fonctionnalités d'un chatbot, l'objectif est de lui permettre de exécutez des scripts et diffusez la sortie standard directement dans le chat. Cependant, l'implémentation actuelle stocke l'intégralité de la sortie standard jusqu'à la conclusion du script. Pour résoudre ce problème, nous recherchons une solution qui fournit une sortie en temps réel.

Le code actuel utilise la fonction runcommand pour exécuter des scripts et renvoyer leur Stdout. Pour mettre en œuvre une sortie en temps réel, nous devons découpler les processus d’exécution et de sortie. Modifions le code pour résoudre ce problème :

<code class="go">func reboot(command *bot.Cmd) (string, error) {
    n := command.Args[0]
    go runcommand(n)
    return "", nil
}</code>
Copier après la connexion

La fonction de redémarrage mise à jour lance la fonction runcommand en tant que goroutine. Cela permet à l'exécution du script de se produire simultanément avec les interactions du chatbot.

<code class="go">func runcommand(server string) {
    cmd := exec.Command("/bin/bash", "-c", "python test.py %s", server)
    cmdReader, err := cmd.StdoutPipe()
    if err != nil {
        fmt.Fprintln(os.Stderr, "Error creating StdoutPipe for Cmd", err)
        return
    }

    scanner := bufio.NewScanner(cmdReader)
    for scanner.Scan() {
        fmt.Printf("\t > %s\n", scanner.Text())
    }

    err = cmd.Run()
    if err != nil {
        fmt.Fprintln(os.Stderr, "Error starting Cmd", err)
        return
    }
}</code>
Copier après la connexion

La fonction runcommand modifiée utilise désormais un scanner pour surveiller en permanence la sortie standard du script. Toute sortie est immédiatement imprimée, permettant une capture de la sortie standard en temps réel.

Grâce à ces modifications, le chatbot peut exécuter efficacement des scripts et diffuser leur sortie stdout dans le chat en temps réel, offrant ainsi une expérience utilisateur améliorée.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!