1
theQueue = tornado.queues.Queue()
theQueue.put_nowait('http://www.baidu.com')
theQueue.put_nowait('http://www.google.com')
theQueue.put_nowait('http://cn.bing.com/')
@tornado.gen.coroutine
def Test1():
def cb(response):
print str(response)
while True:
item = yield theQueue.get()
print item
tmp = tornado.httpclient.AsyncHTTPClient(force_instance=True)
tmp.fetch(item,callback=cb)
@tornado.gen.coroutine
def Test2():
while True:
item = yield theQueue.get()
print item
tmp = tornado.httpclient.AsyncHTTPClient(force_instance=True)
response = yield tmp.fetch(item)
print str(response)
#Test1()
Test2()
tornado.ioloop.IOLoop.instance().start()
蟒2.6和4.2龍捲風
在功能測試1,它將首先打印出3項,然後打印3級的響應。
但是在Test2中,它會打印項目並且它是一個接一個的響應。龍捲風異步HTTP客戶塊
我很困惑,爲什麼Test2不是異步?
在我的情況下,該隊列有很多項目,如果我使用yield,我需要創建多個Test2? –
@JianNiu嘗試調用'tornado.ioloop.IOLoop.current()。spawn_callback(Test2)'多次,這將在後臺產生多協程。相關文檔:http://www.tornadoweb.org/en/stable/guide/coroutines.html#running-in-the-background – piglei