Торнадо В чем разница между @ web.asynchronous @ gen.coroutine VS @ gen.corutine

вдокумент@ web.asynchronous не требуется, если метод также украшен @ gen.coroutine. как это

@web.asynchronous
@gen.coroutine
def get(self):
    ...

но в документе они также объясняют, что если вы используете @ web.asynchronous, вам следует вызвать self.finish (). Однако в вышеприведенном случае (с использованием двух декораторов вместе) соединение завершается без вызова «self.finish ()»

Мне интересно, что там произошло.

и в случае ниже, он работает по-другому с выше.

@web.asynchronous
def get(self):
    self.test()

@gen.coroutine
def test(self):
    httpClient = AsyncHttpClient()
    val = yield httpClient.fetch("http://www.google.com")
    print test
    #self.finish()

Если «self.finish ()» не вызывается, соединение не закрывается.

Кто-нибудь может это объяснить?

Ответы на вопрос(1)

Ваш ответ на вопрос