Python 空闲时重新启动tornado Web服务器

Python 空闲时重新启动tornado Web服务器,python,tornado,Python,Tornado,我正在使用Tornado Web服务器,希望了解如何确定服务器是否空闲了一段时间,然后重新启动它 我试图确定self.requests之间的时间差,以确定是否有一段时间没有收到任何请求。但是有更好的方法吗?一个简单的方法是使用全局变量保存最后一个请求的时间戳,并在处理请求时更新它。比如: #startup initialization code _last_request = datetime.datetime.now() #we will use these variables later

我正在使用Tornado Web服务器,希望了解如何确定服务器是否空闲了一段时间,然后重新启动它


我试图确定self.requests之间的时间差,以确定是否有一段时间没有收到任何请求。但是有更好的方法吗?

一个简单的方法是使用全局变量保存最后一个请求的时间戳,并在处理请求时更新它。比如:

#startup initialization code
_last_request = datetime.datetime.now()

#we will use these variables later
interval = datetime.timedelta(seconds=30)
idle_timeout = datetime.timedelta(seconds=1800)

...

#update timestamp in handler(s)
global _last_request 
_last_request = datetime.datetime.now()
然后,您将添加一个函数,该函数会不时检查_last_request变量:

def idle_check():
    if _last_request - datetime.datetime.now() > idle_timeout: 
        #stop the IOLoop
        tornado.ioloop.IOLoop.instance().stop()
    else:
        #schedule to run again
        tornado.ioloop.IOLoop.instance().add_timeout(interval, idle_check)

在启动IOLoop之前,不要忘记调用idle\u check函数。

因为我认为没有其他方法可以做到这一点。我会接受这个答案。