while
WebSocketHandlerを開いたまま、Tornadoでループを実行しようとしています。gen.Taskを実装しようとしました:
class WSHandler(tornado.websocket.WebSocketHandler):
count = db.my_collection.count() - 1
cursor = coll.find(tailable=True, await_data=True, skip=count)
(...)
@asynchronous
@gen.engine
def run(self):
doc = yield gen.Task(curse)
self.render(doc)
def curse(self):
while WSHandler.cursor.alive:
try:
doc = WSHandler.cursor.next()
return doc
def render(doc)
for c in WSHandler.connections:
c['id'].write_message(doc)
したがって、WebSocket
開いたままにするだけでなく、WSHandler
これらの他のカスタム関数もあります。mongodbのカーソルをテールするために定数ループ(curse(self)
)を実行する必要があります-そして非同期的に、それはをブロックしませんWebSocketHandler
。
私の設定は間違っていますか?それらの関数を別の場所に配置する必要がありますか?(どこで?)どうすれば無限を実行し、同時にwhile loop
開いたままにできますか?WebSocketHandler