在龙卷风中如何在特定数据/时间调用函数?
我试过使用龙卷风库中的函数call_at
,但无法正常使用。
def call_at(self, when, callback, *args, **kwargs)
文档说,这是子类ioloop
的子类,并且重写该函数是必需的,但是我不知道如何正确执行它,我认为这可能超出了我的范围。
答案 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 =无)