2014-01-21 21 views
0

我運行一個龍捲風應用程序,該應用程序具有向每個連接發送消息的定期回調函數。例如: -在龍捲風中運行單獨的epoll循環

def broadcast(): 
    for c in webSocketConnectionList: 
     c.write_message("message") 

上面的代碼相似,我已經和每500秒內從連接到IOLoop週期性回調運行。我想要做的是將這個異步運行到ioloop。也就是說,這種方法使用無限循環不斷重複自己。

所以問題是:我該如何循環這個方法異步IOloop?

回答

0

我不確定你的意思,「與IOLoop異步」。你能解釋一下你想做什麼嗎?

如果你想用一個無限循環,以取代PeriodicCallback,這樣做:

from datetime import timedelta 

from tornado import gen, ioloop 


@gen.coroutine 
def broadcast(): 
    loop = ioloop.IOLoop.current() 
    while True: 
     print "broadcast" 
     for c in webSocketConnectionList: 
      c.write_message("message") 

     yield gen.Task(loop.add_timeout, timedelta(seconds=500)) 


if __name__ == "__main__": 
    broadcast() 
    ioloop.IOLoop.current().start() 

yield語句允許循環繼續運行和處理其他事件(例如HTTP請求),而broadcast方法暫停。