J'ai écrit ce code minimal pour expliquer mon cas:Puis-je appeler des fonctions ou changer des variables via eventlet.backdoor en Python?
import threading
import time
import eventlet
from eventlet import backdoor
eventlet.monkey_patch()
global should_printing
should_printing = True
def turn_off_printing():
global should_printing
should_printing = not should_printing
def printing_function():
global should_printing
while should_printing == True:
print "printing"
time.sleep(1)
def console():
while True:
print "inside console"
time.sleep(1)
if __name__ == '__main__':
eventlet.spawn(backdoor.backdoor_server, eventlet.listen(('localhost', 3000)))
thread = threading.Thread(target=printing_function)
thread.start()
thread = threading.Thread(target=console)
thread.start()
Après son exécution, je me connecte via telnet, importer mon module et appeler turn_off_printing(). Mais ça ne marche pas. Est-ce que j'ai fait une erreur, ou ce n'est pas possible?
ça ne marche pas ... comment? – Hamish
L'impression n'est pas arrêtée. – SuitUp
Il ne semble pas que le serveur de porte dérobée utilise le même espace de noms. En tapant les noms des fonctions, ils ont déclaré qu'ils n'étaient pas définis et que votre variable "should_printing" est également indéfinie. J'ai testé cela tout en étant connecté à l'interpréteur mis en place par le serveur de porte dérobée. – fthinker