J'essaie d'utiliser la classe thread.Timer, mais je continue à avoir des plantages. Voici l'idée: j'ai un code qui lance une optimisation sur une application web. Lorsque l'optimisation est lancée, je souhaite envoyer des requêtes périodiques au serveur de l'application Web pour savoir si l'optimisation est terminée ou en cours d'exécution.Thread Timer émet des python
def checkPeriodically(self):
print "Sending a request"
finished = self.checkOptim()
if finished :
return
t = threading.Timer(60,self.checkPeriodically)
t.start()
fonction Mon checkOptim utilise mécaniser pour se connecter à l'application et lire la page de résultat; Ensuite, il utilise un HTMLParser pour vérifier si l'optimisation est terminée ou non.
def checkOptim(self):
browser = mechanize.Browser()
browser.set_handle_refresh(True, honor_time=True, max_time=10)
browser.open('resultPageURL')
response = browser.response().read()
parser = MyHTMLParser(self.optimName)
parser.feed(response)
return parser.optimFinished
Tout cela fait partie d'un plugin je suis en train d'écrire pour QGIS (SIG), mais je ne pense pas que le problème est lié au logiciel, il est probablement dû à moi de ne pas utiliser la classe de filetage correctement . Toute aide serait grandement appréciée.
Vous aviez raison, le problème vient du fait que la ojet (classe) à partir de laquelle J'appelle "checkPeriodically" n'existe plus quand le timer se produit, provoquant le crash du logiciel Merci pour l'aide! – Ril8772