-1
votes

Comment interrompre en python

Ma fonction d'abonnement appellera la fonction ON_MESSAGE à chaque fois que le message de Websocket et se désabonner lorsque le message est stop xxx

sans en boucle, le code se terminera et ne pas récupérer plus de message. Je veux trouver la meilleure façon (sans Time.sleep) pour interrompre et continuer le code

ps. Je ne peux pas éditer la fonction d'abonnement et de désinscription


3 commentaires

Je ne suis pas sûr de comprendre ce que vous demandez. Voulez-vous que le code impression ("fin") pour fonctionner avant de vous désabonner ou avez-vous un problème avec la boucle jamais rupture du tout? Je pense que vous avez besoin global is_sub dans la fonction On_Message fonctionner pour fonctionner.


Votre code manque la fonction d'abonnement - Actuellement, il ne s'agit que d'une nataleError.


Le is_sub à l'intérieur de votre fonction est une variable locale qui n'a aucune connexion au global scopé is_sub - lire Courte-description-de-Scoping-Règles


3 Réponses :


-1
votes

Si vous souhaitez continuer le code, vous pouvez utiliser la commande continuer () et si vous souhaitez arrêter, vous pouvez utiliser la commande break () . < / p>


1 commentaires

Ce n'est pas très clair de ce dont vous parlez ici. Continuer et Break sont des mots-clés de Python. Ce sont des déclarations indépendantes et non des fonctions que vous devez appeler.



0
votes

Vous pouvez exécuter l'instance de votre serveur WebSocket dans un fil séparé. Cela vous permettra toujours de continuer à exécuter votre fil principal lorsque votre serveur Web écoute des messages entrants.


3 commentaires

Je pense que cela peut être le contraire de ce que le questionneur a besoin. Ils semblent veulent le fil principal à bloquer pendant que la switewet est sa chose, mais il ne semble pas y avoir un excellent moyen d'attendre qu'il finisse. Leur code actuel est une boucle avec un appel appel, et ils veulent une meilleure façon.


Ensuite, j'ai complètement manqué le point, mon hypothèse était que le problème est que le serveur doit être bloqué pour pouvoir recevoir constamment des messages.


Oui, je ne suis pas certain de mon interprétation, la question n'est pas très claire.



0
votes

Je pense que vous ne pouvez pas le faire sans une boucle de temps. Si vous souhaitez libérer votre fil principal, vous pouvez faire votre abonnement à votre message sur le fil séparé, mais ce n'est pas ce que vous voulez, je suppose. La plupart des clients Websocket fourniraient une méthode pour garder la connexion en vie. par exemple Ceci fournit un Run_forever () Méthodes qui fait le "Bien que boucle 'partie pour vous. Si vous utilisez un client, il est possible qu'ils fournissent des méthodes permettant de garder la connexion en vie. Je vous suggère de passer une fois de plus la documentation.


0 commentaires