通过Tornado IOLoop.spawn_callback的后台计时器

时间:2018-03-28 13:58:29

标签: python tornado

我想在基于龙卷风的网络应用程序中运行计时器,使其在后台运行并且不会阻塞。

一旦计时器结束,就必须调用一个特定的任务,因此计时器准确完成是非常重要的。

理想的做法应该是什么?

我在文档中阅读了Tornado .accept(),但我不太清楚它会表现得正确。

我不太明白doc

中的陈述

health-check-type: http health-check-http-endpoint: ${CF_INSTANCE_IP}:8091/actuator/health

1 个答案:

答案 0 :(得分:2)

如果您想在特定时间后运行某个功能,可以使用IOLoop.call_later。像这样使用它:

IOLoop.current().call_later(5, my_func) # will call my_func 5 seconds later

def my_func():
    # do something

IOLoop.spawn_callback用于在IOLoop的下一次迭代中运行回调/函数,即 - 几乎立即。您无法为spawn_callback添加时间。由于您希望在超时后安排回调,因此您需要IOLoop.call_later

在你的评论中你问了

  

为什么根据你IOLoop.spawn_callback不被使用?

好吧,我从未说过不使用它。如果需要,您可以使用它。在这种情况下,你不会。

那么,你何时需要它?如果您需要在没有超时的情况下立即运行回调,那么您可以使用spawn_callback。但即便如此,IOLoop.add_callback的使用范围远远超过spawn_callback