초보자 용 질문처럼 들리면 토네이도에 익숙하지 않으므로 유감스럽게 생각합니다.Python - 클라이언트가 서버에 연결하지 못하도록 차단하지 않고 Tornado에서 타이머를 실행할 수 없음
표준 html/js 코드와 토네이도를 사용하여 클라이언트와 카드 게임을 만들고 있습니다. 모든 것은 잘 작동하지만 특정 시간이 지나면 특정 코드가 실행되는 서버에서 카운트 다운을 구현해야합니다. 나는 다음 파이썬 코드를 사용하여 요청이 된 후에 토네이도에서 호출하고
import time
class StartTimer(object):
timerSeconds = 0
def __init__(self):
print "start timer initiated"
def initiateTime(self, countDownSeconds):
self.timerSeconds = countDownSeconds
while self.timerSeconds >= 0:
time.sleep(1)
print self.timerSeconds
self.timerSeconds -=1
if self.timerSeconds == 0:
#countdown finishes
print "timer finished run the code"
def getTimer(self):
return self.timerSeconds
카운트 다운이 잘 작동하지만 내가 먼저 두 가지 문제를 가지고, 타이머가 다른 연결을 서버 블록을 카운트 다운하는 동안 및 그들을 대기열에 넣고 두 번째로 타이머가 끝난 후에 코드를 실행하면 getTimer 함수가 작동하여 새로운 클라이언트가 얼마나 많은 시간이 남았는지 알 수 있습니다 (기본적으로 timerSeconds 값 가져 오기). 타이머가 사용자에게 보이지 않을 수도 있지만 코드가 차단되었다는 사실은 분명 좋지 않습니다.
완전한 답변이 아닙니다. (죄송 합니다만, 토네이도를 모르지만) : http://www.tornadoweb.org/en/stable/ioloop.html#tornado.ioloop.Ioloop.add_timeout은 타이머 완료되었습니다. 'time.sleep()'는 전체 스레드를 1 초 동안 단순히 차단하기 때문에 코드가 작동하지 않습니다. –