Tornado 學習 -- 異步

同步:是指按部就班一步一步執行,始終按照同一步調執行。

異步:對一個業務邏輯,分到多個主線上執行。  多線程不等於異步

 

tornado異步:tornado異步實現的機制不是線程,而是epoll,即將異步過程交給epoll執行監視回調。

因爲epoll主要是用來解決網絡IO的併發問題,所以tornado的異步編程也主要體現在網絡IO的異步上,即異步web請求。

1.tornado.httpclient.AsyncHTTPClient  --用於進行異步web請求

  fetch(request, callback=None)  --用於執行一個web請求request,並異步返回一個tornado.httpclient.HTTPResponse響應。

  request: 可以是一個url, 也可以是tornado.httpclient。HTTPReuqest對象。

HTTPReuqest請求類常用參數:

   url,method --訪問方式,headers  --請求頭,body --請求體

HTTPResponse響應常用參數:

    code --HTTP狀態碼,reason --狀態碼描述信息,  body --響應體字符串, error--異常

2.測試接口

接口說明:

   a.請求接口: 接口地址

   b響應信息:

  c.返回數據格式: json格式

3.回調異步

   tornado.web.asynchronous --這個裝飾器用於回調行走時的異步方法,並且應僅用於HTTP方法上。這個裝飾器不會讓被裝飾的方法變爲異步,而是告訴框架被裝飾的方法是異步的,當方法返回時響應應尚未完成,只有request handler調用finish方法後,才結束本次請求處理,發送響應。

4.協程異步

   tornado.gen.coroutine

@tornado.gen.coroutine
def get(self):
    client = AsynHTTPClient()
    resp = yield client.fetch('xxx')
    json_data = resp.body
    data = json.loads(json_data)
    self.write(data.get('name', ''))

python2中 使用yield關鍵字,就不能使用返回數據值的return,用return只能是不帶返回值的。

5.並行協程

   tornado中可以同時執行多個異步,併發的異步可以使用字典或列表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章