Python-无法在不影响客户端连接服务器的情况下在Tornado中运行计时器

在龙卷风中经验不是很丰富,如果听起来像是一个新手问题,对不起.

我正在使用标准html / js代码和服务器上的龙卷风与客户一起制作纸牌游戏.一切工作正常,但是我需要在服务器上实施倒计时,经过一定时间后,将运行某些代码.我正在使用以下python代码,并在提出请求后从龙卷风中调用它

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值).我可以避免计时器不向用户显示,但是代码被阻止的事实绝对不好.

请帮忙

解决方法:

time.sleep()将阻止,请使用add_timeout()代替
检查here

编辑:对不起,它已经由@Armin Rigo回答

这是an example

import time
import tornado.ioloop


def delayed_print(s):
    if len(s) == 0:
        ioloop.stop()
    else:
        print s[0]
        ioloop.add_timeout(time.time() + 1, lambda:delayed_print(s[1:]))

ioloop = tornado.ioloop.IOLoop()
delayed_print('hello world')
ioloop.start()
上一篇:javascript-带有Cookie的倒数计时器


下一篇:javascript – 刷新浏览器时如何使倒数计时器不重置?