Вот два простых RequestHandlers
:
class AsyncHandler(tornado.web.RequestHandler):
@gen.coroutine
def get(self):
while True:
future = Future()
global_futures.add(future)
s = yield future
self.write(s)
self.flush()
class AsyncHandler2(tornado.web.RequestHandler):
@gen.coroutine
def get(self):
for f in global_futures:
f.set_result(str(dt.now()))
global_futures.clear()
self.write("OK")
Первый подписывается на поток, второй доставляет сообщение всем подписчикам.
Проблема в том, что у меня не может быть больше группы (в моем случае 5-6) подписчиков. Как только я подписываюсь больше разрешенного, следующий запрос ко второму методу просто зависает.
Я предполагаю, что это происходит из-за того, что первый обработчик не является должным образом асинхронным. Это потому, что я использую глобальный объект для хранения списка подписчиков?
Как я могу открыть больше потоковых запросов одновременно и каков логический предел?