2012-05-20 1 views
1

Comment modifier ce code pour que je puisse appeler doWork() une fois toutes les 60 secondes. Actuellement, il boucle définitivement et s'arrête après 60 secondes. Voulez-vous faire l'inverse exact.Python: Comment est-ce que je change ce code pour que je puisse faire un travail() toutes les 60 secondes?

from twisted.internet import task 
from twisted.internet import reactor 
import twapi 
timeout = 200.0 # Sixty seconds 

def doWork(): 
    #do work here 
    twapi.main('1') 
    pass 

l = task.LoopingCall(doWork) 
l.start(timeout) # call every sixty seconds 

reactor.run() 
+0

Que voulez-vous se passer si twapi.main' ne revient pas dans une minute? – jfs

Répondre

5

De oficial Twisted documentation

from twisted.internet import task 
from twisted.internet import reactor 

def runEverySecond(): 
    print "a second has passed" 

l = task.LoopingCall(runEverySecond) 
l.start(1.0) # call every second 

reactor.run() 
0

J'ai modifié votre script à la sortie heure actuelle une fois en une minute:

#!/usr/bin/python 
from twisted.internet import task 
from twisted.internet import reactor 
from datetime import datetime as time 
timeout = 60.0 # Sixty seconds 

def doWork(): 
    #do work here 
    print time.now().isoformat() 

l = task.LoopingCall(doWork) 
l.start(timeout) # call every sixty seconds 

reactor.run() 

et il fonctionne comme ça:

2012-05-20T19:24:44.388682 
2012-05-20T19:25:44.389788 
2012-05-20T19:26:44.389424 

Le seul pr oblem dans votre extrait je peux voir est que vous demandez au réacteur d'invoquer votre fonction une fois toutes les 200 secondes, pas 60.

Questions connexes