gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:20:28 26 4
gpt4 key购买 nike

在 Tornado 方面不是很有经验,如果这听起来像是一个新手问题,我们深表歉意。

我正在使用标准 html/js 代码和服务器上的 Tornado 与客户一起构建纸牌游戏。一切正常,但是我需要在服务器上实现倒计时,在服务器上运行一定时间后运行特定代码。我正在使用以下 python 代码并在发出请求后从 Tornado 中调用它

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

关于Python - 无法在不阻止客户端连接到服务器的情况下在 Tornado 中运行计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15853891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com