如何在特定时间在龙卷风中调用函数

时间:2018-07-13 15:38:03

标签: python tornado

在龙卷风中如何在特定数据/时间调用函数? 我试过使用龙卷风库中的函数call_at,但无法正常使用。

def call_at(self, when, callback, *args, **kwargs)

文档说,这是子类ioloop的子类,并且重写该函数是必需的,但是我不知道如何正确执行它,我认为这可能超出了我的范围。

2 个答案:

答案 0 :(得分:1)

不,您不需要继承任何子类。您只需要调用ioloop.IOLoop.current()即可获取当前正在运行的ioloop实例,然后调用call_at即可运行您的函数。

但是,使用call_later比使用call_at更容易。

使用call_later的示例:

ioloop.IOLoop.current().call_later(delay=10, callback=your_function)

# Tornado will run `your_function` after 10 seconds.

如果您仍然想使用call_at,请参见以下示例:

current_time = ioloop.IOLoop.current().time()
call_time = current_time + 10
ioloop.IOLoop.current().call_at(when=call_time, callback=your_function)

# Tornado will run `your_function` after 10 seconds

更新:

要在特定时间运行功能,可以执行以下操作:

from datetime import datetime

# take note of the current time
now = datetime.now()

# create a datetime object of when you want to call your function
call_time = datetime(year=2018, month=7, day=18, hour=14, minute=30) 

# find the time difference in seconds between `call_time` and `now`
call_time_seconds = (call_time - now).seconds

ioloop.IOLoop.current().call_later(delay=call_time_seconds, callback=your_function)
# Tornado will run your function at 14:30 on 18 July.

答案 1 :(得分:0)

您应该使用PeriodicCallback

tornado.ioloop.PeriodicCallback类(回调,callback_time,io_loop =无)