트위스트 프레임 워크를 사용하고 있으며 이벤트가 시작된 후 경과 한 시간을 추적하고 일정량이 지나면 조치를 수행해야합니다.Twisted에서 각 틱을 실행하십시오.
내가 할 수있는 가장 좋은 방법은 원자로의 진드기마다 타임 스탬프를 확인하는 것입니다. 그것이 최선의 방법이라면 어떻게해야합니까? 그렇지 않은 경우 더 좋은 방법이 무엇입니까?
는트위스트 프레임 워크를 사용하고 있으며 이벤트가 시작된 후 경과 한 시간을 추적하고 일정량이 지나면 조치를 수행해야합니다.Twisted에서 각 틱을 실행하십시오.
내가 할 수있는 가장 좋은 방법은 원자로의 진드기마다 타임 스탬프를 확인하는 것입니다. 그것이 최선의 방법이라면 어떻게해야합니까? 그렇지 않은 경우 더 좋은 방법이 무엇입니까?
는내가 찾던 기능은 여기에 설명 된 것 같다 : 당신은 callLater
를 사용하려면
def check_time(self):
for game in self.games:
if self.games[game]['state'] == 'GAME':
game_start_time = self.games[game]['starttime']
if game_start_time is None:
continue
elif game_start_time + 300 > time.time():
#300 seconds = 5 minutes.
continue
else:
self.end_game(game)
def __init__(self):
self.timecheck = task.LoopingCall(self.check_time)
self.timecheck.start(1)
: 는 Running a function periodically in twisted protocol
여기 내 코드입니다.
다음은 "이벤트가 시작된 후 일정 시간이 경과 할 때 작업 수행"이라는 질문을하는 완전한 실행 가능한 예제입니다.
from twisted.internet import reactor
certainAmount = 0.73 # this is in seconds
def startedEvent():
print 'started event'
reactor.callLater(certainAmount, performAnAction)
def performAnAction():
print 'performed an action'
reactor.stop()
startedEvent()
reactor.run()
(I 반응기에서 '틱'와 같은 같은 것은 정말 생각하지 않는, 적어도 의미에서 당신이 무슨 뜻 같은데요하지 그.)
이하지 않습니다 나는 내가 원하는 것을 아주 잘한다. task.LoopingCall을 사용하여 매 초 두 개의 타임 스탬프를 비교했습니다. 내 대답의 링크를 참조하십시오. –
@Alex. 니가 끝냈어. 'LoopingCall' - 당신이 원한다면, Looping Calls와 Glyph로서의'CallLater'는 당신이 전화를 걸기를 원한다면 언급했다. 'sleep'과'doWork'에 대한 탁월한 대안 -'sleep'이'reactor'를 막을 것이기 때문에 당신은 그것을 원하지 않습니다. –