最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用grequests并發(fā)發(fā)送請求的示例

 更新時間:2020年11月05日 15:50:56   作者:臨淵  
這篇文章主要介紹了Python使用grequests并發(fā)送請求的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

前言

requests是Python發(fā)送接口請求非常好用的一個三方庫,由K神編寫,簡單,方便上手快。但是requests發(fā)送請求是串行的,即阻塞的。發(fā)送完一條請求才能發(fā)送另一條請求。
為了提升測試效率,一般我們需要并行發(fā)送請求。這里可以使用多線程,或者協程,gevent或者aiohttp,然而使用起來,都相對麻煩。

grequests是K神基于gevent+requests編寫的一個并發(fā)發(fā)送請求的庫,使用起來非常簡單。

安裝方法: pip install gevent grequests
項目地址:https://github.com/spyoungtech/grequests

grequests簡單使用

首先構造一個請求列表,使用grequests.map()并行發(fā)送,得到一個響應列表。示例如下。

import grequests

req_list = [ # 請求列表
 grequests.get('http://httpbin.org/get?a=1&b=2'),
 grequests.post('http://httpbin.org/post', data={'a':1,'b':2}),
 grequests.put('http://httpbin.org/post', json={'a': 1, 'b': 2}),
]

res_list = grequests.map(req_list) # 并行發(fā)送,等最后一個運行完后返回
print(res_list[0].text) # 打印第一個請求的響應文本

grequests支持get、post、put、delete等requests支持的HTTP請求方法,使用參數和requests一致,發(fā)送請求非常簡單。
通過遍歷res_list可以得到所有請求的返回結果。

grequests和requests性能對比

我們可以對比下requests串行和grequests并行請求100次github.com的時間,示例如下。
使用requests發(fā)送請求

import requests
import time

start = time.time()
res_list = [requests.get('https://github.com') for i in range(100)]
print(time.time()-start)

實際耗時約100s+

使用grequests發(fā)送

import grequests
import time

start = time.time()
req_list = [grequests.get('https://github.com') for i in range(100)]
res_list = grequests.map(req_list)
print(time.time()-start)

際耗時約3.58s

異常處理

在批量發(fā)送請求時難免遇到某個請求url無法訪問或超時等異常,grequests.map()方法還支持自定義異常處理函數,示例如下。

import grequests

def err_handler(request, exception):
 print("請求出錯")

req_list = [
 grequests.get('http://httpbin.org/delay/1', timeout=0.001), # 超時異常
 grequests.get('http://fakedomain/'), # 該域名不存在
 grequests.get('http://httpbin.org/status/500') # 正常返回500的請求
]

res_list = grequests.map(reqs, exception_handler=err_handler)
print(res_list)

運行結果:

請求出錯
請求出錯
[None, None, <Response [500]>]

以上就是Python使用grequests并發(fā)發(fā)送請求的示例的詳細內容,更多關于Python grequests發(fā)送請求的資料請關注腳本之家其它相關文章!

相關文章

  • Python包,__init__.py功能與用法分析

    Python包,__init__.py功能與用法分析

    這篇文章主要介紹了Python包,__init__.py功能與用法,結合實例形式分析了Python中包的概念、功能及__init__.py初始化相關操作技巧,需要的朋友可以參考下
    2020-01-01
  • Python中異常的捕獲與處理詳解

    Python中異常的捕獲與處理詳解

    這篇文章主要介紹了Python中異常的捕獲與處理詳解,調試Python程序時,經常會報出一些異常,異常的原因一方面可能是寫程序時由于疏忽或者考慮不全造成了錯誤,這時就需要根據異常Traceback到出錯點,進行分析改正,需要的朋友可以參考下
    2023-08-08
  • python 淺談serial與stm32通信的編碼問題

    python 淺談serial與stm32通信的編碼問題

    今天小編就為大家分享一篇python 淺談serial與stm32通信的編碼問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python的urllib.parse用法及說明

    python的urllib.parse用法及說明

    這篇文章主要介紹了python的urllib.parse用法及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python如何有效地使用迭代

    Python如何有效地使用迭代

    這篇文章主要為大家詳細介紹了Python如何有效地使用迭代,文中的示例代碼講解詳細,對我們深入了解Python有一定的幫助,需要的小伙伴可以學習一下
    2023-09-09
  • Python進行區(qū)間取值案例講解

    Python進行區(qū)間取值案例講解

    這篇文章主要介紹了Python進行區(qū)間取值案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • python中如何實現將數據分成訓練集與測試集的方法

    python中如何實現將數據分成訓練集與測試集的方法

    這篇文章主要介紹了python中如何實現將數據分成訓練集與測試集的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • 使用python爬蟲實現抓取動態(tài)加載數據

    使用python爬蟲實現抓取動態(tài)加載數據

    這篇文章主要給大家介紹了如何用python爬蟲抓取豆瓣電影“分類排行榜”中的電影數據,比如輸入“犯罪”則會輸出所有犯罪影片的電影名稱、評分,文中通過代碼示例和圖文介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • 詳解使用scrapy進行模擬登陸三種方式

    詳解使用scrapy進行模擬登陸三種方式

    這篇文章主要介紹了使用scrapy進行模擬登陸三種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python下載網絡小說實例代碼

    Python下載網絡小說實例代碼

    這篇文章主要介紹了Python下載網絡小說實例代碼,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02

最新評論

新竹县| 都匀市| 耿马| 石台县| 泸西县| 汉寿县| 景谷| 繁峙县| 文安县| 鄯善县| 澜沧| 铜川市| 体育| 新津县| 元谋县| 甘孜县| 盐池县| 吉首市| 湖南省| 亚东县| 河北区| 怀远县| 红原县| 武穴市| 顺平县| 香格里拉县| 伊金霍洛旗| 陆良县| 上蔡县| 鄂托克旗| 山阳县| 广南县| 托里县| 巴南区| 南开区| 成武县| 历史| 从化市| 三穗县| 兴海县| 行唐县|