Привет, у меня проблема с инфраструктурой Tornado, реализующей долгий опрос. Метод post моего обработчика запросов украшен как @asynchronous
, так и @gen.coroutine
. Когда я оставляю его зависшим для вызова обратного вызова для обратной записи клиенту, соединение немедленно закрывается. Я видел, что это связано с использованием @gen.coroutine
, который автоматически вызывает self.finish()
, когда все фьючерсы получены. Мне нужен этот декоратор, потому что я использую Mongo Motor. Краткий пример ниже:
@web.asynchronous
@gen.coroutine
def post(self):
#mongo Motor yielding code
notifications.register_callback(self.on_message)
Уведомления — это глобальный объект, который хранит массив обратных вызовов и вызывает их при получении сообщения извне. Спасибо