爲什麼傳入的請求沒有被處理,而另一個請求處於「等待」狀態?爲什麼龍捲風中的異步函數被阻塞?
如果你看看下面的代碼,函數「get」有一個龍捲風任務,用「yield」關鍵字執行,這意味着「等待回調被執行」。在我的代碼中,回調永遠不會執行。如果您第一次處於保持狀態時第二次運行請求,則不處理第二個請求。如果你運行任何其他請求,它們正在處理得很好。
所以,我的行動: 1.啓動應用 2.獲取本地主機:8080/ - 應用程序是打印輸出的 「來電」 3.獲取本地主機:8080/anotherrequest - 應用在打印輸出「另一個請求「 4. GET localhost:8080/ - 應用程序在打印」來電「時未打印任何輸出。爲什麼?
那麼,爲什麼這段代碼被阻塞?代碼示例已附加。
我正在使用龍捲風2.1和Python 2.7來運行此示例。
謝謝
import tornado
import tornado.web
from tornado import gen
class AnotherHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def get(self):
print 'another request'
self.finish()
class MainHandler(tornado.web.RequestHandler):
def printStuff(*args, **kwargs):
print 'incoming call'
@tornado.web.asynchronous
@tornado.gen.engine
def get(self):
result = yield tornado.gen.Task(self.printStuff);
application = tornado.web.Application([
(r"/", MainHandler),
(r"/anotherrequest", AnotherHandler)
])
if __name__ == "__main__":
application.listen(8080)
tornado.ioloop.IOLoop.instance().start()
我在提及它的目的是永遠不會完成請求。 – user1671010