Python 龙卷风中的唤醒-睡眠背景方法

Python 龙卷风中的唤醒-睡眠背景方法,python,tornado,Python,Tornado,在我的tornado服务器中,我有一个定期运行的后台进程。我按照建议将其实现为一个永无止境的循环: @tornado.gen.coroutine def background_loop(): while True: do_something() yield tornado.gen.sleep(60) (我单独打电话) 现在我的问题是——有时我想触发后台循环的立即运行。问题是,我不能让其中两个并行运行,因为代码假定一次只运行一个循环 我在想,有没有办法“唤醒”我的背

在我的tornado服务器中,我有一个定期运行的后台进程。我按照建议将其实现为一个永无止境的循环:

@tornado.gen.coroutine
def background_loop():
   while True:
      do_something()
      yield tornado.gen.sleep(60)
(我单独打电话)

现在我的问题是——有时我想触发后台循环的立即运行。问题是,我不能让其中两个并行运行,因为代码假定一次只运行一个循环

我在想,有没有办法“唤醒”我的背景循环

我目前的攻击是,我实现了一些锁,启动第二个后台_循环,它将运行一次迭代,窃取锁,如果主循环无法获得锁,它将跳过一次迭代。感觉只要唤醒主方法就简单多了


谢谢

最简单的答案是使用a:而不是
gen.sleep()
,使用
队列。获取带有超时的
。超时将定期触发,或者您可以通过在队列中输入值立即将其唤醒

ioloop.spawn_callback(background_loop)