Python REPL pour un processus en cours d'exécution
-
09-09-2019 - |
Question
Je développe actuellement une application simple en python qui se connecte à un serveur. À l'heure actuelle, il est mono-thread (multithreading est pas nécessaire).
Cependant, je voudrais - pour le débogage, la maintenance et tel être également en mesure d'avoir un REPL via stdin
.Comment puis-je à ce sujet, si possible? Ai-je besoin de garder quoi que ce soit à l'esprit? Est-ce que je dois faire un thread séparé pour elle?
La solution
Peut-être cette question pourrait aider. Vous pouvez le modifier un peu pour créer un REPL personnalisé.
Autres conseils
Vous avez besoin soit d'aller non-blocage ou utilisez un fil.
J'utiliser personnellement Twisted pour la concurrence, qui offre également un REPL-protocole qui est facile à intégrer.
Il y a aussi rfoo . De l'README:
rconsole - inclus avec le paquet rfoo est une console Python à distance avec l'achèvement de l'automobile, qui peut être utilisé pour inspecter et modifier l'espace de noms d'un l'exécution du script.
Pour activer dans un script faire:
from rfoo.utils import rconsole
rconsole.spawn_server()
Pour joindre à partir d'une coquille faire:
$ rconsole
SÉCURITÉ NOTE:
L'auditeur rconsole commencé avec spawn_server () acceptera toute locale connexion et peut donc être peu sûr à utiliser dans l'hébergement mutualisé ou dans des environnements similaires!