tornado_http同步IO非同步IO
阿新 • • 發佈:2018-11-14
同步IO:
from tornado.httpclient import HTTPClient
def synchronous():
http_client = HTTPClient()
response = http_client.fetch('www.baidu.com')
print(response.body)
同步IO操作導致請求程序阻塞,直到IO操作完成,上述程式碼中典型的同步IO訪問百度網站,該函式的執行取決於網速、對方伺服器的響應速度等,只有當訪問成功並且獲取到結果後,才能完成該函式的全部執行
非同步IO:
from tornado.httpclient import AsyncHTTPClient def handle_response(response): print(response.body) def asynchronous(): http_client = AsyncHTTPClient() http_client.fetch('www.baidu.com', callback=handle_response)
AsyncHTTPClient是Tornado的非同步訪問HTTP客戶端。上述程式碼中asynchronous函式使用AsyncHTTPClient對網站訪問,http_client.fetch()函式會立即返回無需等待,導致asynchronous函式會立即執行完成,當訪問成功後,立即呼叫callback引數指定函式。