国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

使用基于Python的Tornado框架的HTTP客戶端的教程

2020-02-23 00:50:14
字體:
來源:轉載
供稿:網友

由于tornado內置的AsyncHTTPClient功能過于單一, 所以自己寫了一個基于Tornado的HTTP客戶端庫, 鑒于自己多處使用了這個庫, 所以從項目中提取出來, 寫成一個單獨庫 tornadohttpclient

TornadoHTTPClient 是一個基于Tornado的高效的異步HTTP客戶端庫, 支持Cookie和代理, 目前僅在Python2.7平臺上測試過, 不支持Python3

聽取了仙子君的意見, 直接對tornado.curl_httpclient.CurlAsyncHTTPClient進行封裝
安裝

首先從git clone 下代碼

git clone https://github.com/coldnight/tornadohttpclient.git

然后安裝它

cd tornadohttpclientpython setup.py install

教程
GET

TornadoHTTPClient的get方法可以發起一個get請求

from tornadohttpclient import TornadoHTTPClient# 實例化http = TornadoHTTPClient()# 發出get請求http.get("http://www.linuxzen.com")# 開始主事件循環http.start()

POST

TornadoHTTPClient的post方法可以發起一個post請求
讀取響應

上面僅僅發出了請求, 但是我們無法讀取GET請求回來的數據, 我們可以使用一個回調來讀取響應

from tornadohttpclient import TornadoHTTPClienthttp = TornadoHTTPClient()def callback(response):  print response.body  http.stop()http.get("http://www.linuxzen.com", callback = callback)http.start()

通過callback關鍵字參數我們可以傳進一個回調函數, 當請求成功時會調用此函數, 并給此函數傳遞一個與urllib2.urlopen返回一樣的reponse實例
上傳文件

upload方法可以上傳文件, 其接受一個url和文件的field和文件路徑, 還有其他post參數

from tornadohttpclient import TornadoHTTPClienthttp = TornadoHTTPClient()def callback(response):  print("打開圖片鏈接", end = " ")  print(response.effective_url)  http.stop()http.upload("http://paste.linuxzen.com", "img", "img_test.png",          callback = callback)http.start()

給callback傳遞參數

有時候callback可能需要訪問局部變量, 可以通過 args和kwargs關鍵字參數, 將callback的參數傳遞給get/post方法, args參數將會在response參數之后被傳遞, args參數類型應當是一個元組, kwargs參數類型應當是一個字典

from tornadohttpclient import TornadoHTTPClienthttp = TornadoHTTPClient()def callback(response, times):  print response.body  print times  if times == 9:    http.stop()for i in range(10):  http.get("http://www.linuxzen.com", callback = callback, args = (i, ))http.start()

發送延遲請求

有時我們需要延遲幾秒也發送請求或每隔幾秒就發送一個請求, get/post方法的delay關鍵字參數可以解決, delay參數接受一個單位為秒的數字, 并延遲delay秒后發起請求

from tornadohttpclient import TornadoHTTPClienthttp = TornadoHTTPClient()def callback(response, times):  print response.body  if times < 9:    # 延遲10秒發送此請求    http.get("http://www.linuxzen.com", callback = callback, args = (times + 1, ), delay = 10)  else:    http.stop()http.get("http://www.linuxzen.com", callback = callback, args = (1, ))http.start()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 纳雍县| 进贤县| 玛纳斯县| 浦北县| 北海市| 河北省| 深圳市| 丹东市| 竹山县| 仁寿县| 永德县| 衡东县| 荥经县| 甘孜县| 郓城县| 垣曲县| 隆子县| 汉源县| 沂源县| 洛南县| 阿拉善左旗| 朝阳县| 河源市| 科尔| 鸡西市| 永嘉县| 文安县| 穆棱市| 泊头市| 桃园县| 噶尔县| 乐平市| 花莲市| 霍州市| 平利县| 正定县| 隆化县| 广宗县| 额尔古纳市| 巴马| 青铜峡市|