1

60 秒ごとに 1 回 doWork() を呼び出せるように、このコードを変更するにはどうすればよいですか。現在、確実にループしており、60 秒後に停止します。真逆のことをしたい。

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()
4

2 に答える 2

5

公式のツイストドキュメントから

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()
于 2012-05-20T12:13:51.400 に答える
0

スクリプトを修正して、現在の時刻を 1 分に 1 回出力するようにしました。

#!/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()

そして、それはそのように機能します:

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

私が見ることができるスニペットの唯一の問題は、60 秒ではなく、200 秒ごとに 1 回関数を呼び出すようにリアクターに要求することです。

于 2012-05-20T12:30:12.893 に答える