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

解決Python httpx 運(yùn)行過程中無(wú)限阻塞的問題

 更新時(shí)間:2022年11月28日 17:03:25   作者:多多魚啊  
這篇文章主要介紹了解決Python httpx 運(yùn)行過程中無(wú)限阻塞的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Python httpx 運(yùn)行過程中無(wú)限阻塞

requests 模塊只支持 http1,在遇到 http2 的數(shù)據(jù)接口的時(shí)候(某乎的搜索接口),需要采用支持http2 請(qǐng)求的模塊(如 httpx、hyper)。

本文是針對(duì) httpx 在請(qǐng)求數(shù)據(jù)時(shí),出現(xiàn)無(wú)限阻塞問題的一些處理方法。

httpx 的 timeout 有 bug,會(huì)導(dǎo)致腳本在運(yùn)行一段時(shí)間后,出現(xiàn)線程阻塞卡死的問題(無(wú)限 timeout)。

1.通過 pm2 部署腳本

另外啟動(dòng)一個(gè)腳本,定時(shí)對(duì)該腳本進(jìn)行重啟操作。

舉個(gè)栗子:

import time
import os

while True:
? ? time.sleep(60 * 60) # 一小時(shí)重啟一次
? ? os.system('pm2 restart test') ?

這個(gè)方法有個(gè)不好的地方,在請(qǐng)求過程中,可能需要翻很多頁(yè),如果不斷重啟腳本,可能導(dǎo)致無(wú)法翻到最后一頁(yè)。

2.通過裝飾器給函數(shù)設(shè)置一個(gè)最大執(zhí)行超時(shí)時(shí)間

當(dāng)函數(shù)執(zhí)行時(shí)間超過某個(gè)時(shí)間就拋出 TimeOut 異常

from func_timeout import func_set_timeout
import func_timeout
import time

@func_set_timeout(5) ?# 函數(shù)最大執(zhí)行時(shí)間 5s
def test():
? ? time.sleep(20)

def run():
? ? try:
? ? ? ? test()
? ? ? ? print('test 函數(shù)執(zhí)行完成')
? ? except func_timeout.exceptions.FunctionTimedOut:
? ? ? ? print('test 函數(shù)執(zhí)行超時(shí)')
run()

如上面例子那樣,在 httpx.Client 所在函數(shù)設(shè)置一個(gè)額外等待時(shí)間,當(dāng)該函數(shù)執(zhí)行時(shí)間超過某個(gè)時(shí)間,就強(qiáng)制拋出 timeout 異常,避免程序無(wú)限阻塞。

python爬蟲httpx的用法

安裝命令:pip install httpx

請(qǐng)求方式

  • GET
import httpx
?
headers = {'user-agent': 'my-app/1.0.0'}
params = {'key1': 'value1', 'key2': 'value2'}
url = 'https://httpbin.org/get'
r = httpx.get(url, headers=headers, params=params)
  • POST
r = httpx.post('https://httpbin.org/post', data={'key': 'value'})?
  • PUT
r = httpx.put('https://httpbin.org/put', data={'key': 'value'})
  • DELETE
r = httpx.delete('https://httpbin.org/delete')?

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python OpenCV高斯金字塔與拉普拉斯金字塔的實(shí)現(xiàn)

    Python OpenCV高斯金字塔與拉普拉斯金字塔的實(shí)現(xiàn)

    這篇文章主要介紹了Python OpenCV高斯金字塔與拉普拉斯金字塔的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python字符串和其常用函數(shù)合集

    Python字符串和其常用函數(shù)合集

    這篇文章主要給大介紹Python字符串和分享其常用函數(shù)合集,字符串、首字母大寫定義、所有字母大寫、所有字母小寫等函數(shù),具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-03-03
  • python海龜繪圖之畫國(guó)旗實(shí)例代碼

    python海龜繪圖之畫國(guó)旗實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于python海龜繪圖之畫國(guó)旗的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • python中numpy 數(shù)組過濾詳解

    python中numpy 數(shù)組過濾詳解

    這篇文章主要介紹了python中numpy 數(shù)組過濾詳解的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Pandas多個(gè)條件(AND,OR,NOT)中提取行

    Pandas多個(gè)條件(AND,OR,NOT)中提取行

    本文主要介紹了Pandas多個(gè)條件(AND,OR,NOT)中提取行,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python實(shí)現(xiàn)url長(zhǎng)短鏈接的轉(zhuǎn)換

    Python實(shí)現(xiàn)url長(zhǎng)短鏈接的轉(zhuǎn)換

    短鏈接,通俗來(lái)說(shuō),就是將長(zhǎng)的URL網(wǎng)址,通過程序計(jì)算等方式,轉(zhuǎn)換為簡(jiǎn)短的網(wǎng)址字符串。本文將用Python語(yǔ)言實(shí)現(xiàn)這一效果,需要的可以參考一下
    2022-11-11
  • 解析python的局部變量和全局變量

    解析python的局部變量和全局變量

    函數(shù)內(nèi)部定義的變量就叫局部變量而如果一個(gè)變量既能在一個(gè)函數(shù)中使用,也可以在其他函數(shù)中使用,這樣的變量就是全局變量。 本文給大家介紹python的局部變量和全局變量的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2019-08-08
  • Jupyter notebook如何實(shí)現(xiàn)指定瀏覽器打開

    Jupyter notebook如何實(shí)現(xiàn)指定瀏覽器打開

    這篇文章主要介紹了Jupyter notebook如何實(shí)現(xiàn)指定瀏覽器打開,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python實(shí)現(xiàn)讀取.nc數(shù)據(jù)并提取指定時(shí)間與經(jīng)緯度維度對(duì)應(yīng)的變量數(shù)值

    Python實(shí)現(xiàn)讀取.nc數(shù)據(jù)并提取指定時(shí)間與經(jīng)緯度維度對(duì)應(yīng)的變量數(shù)值

    這篇文章主要為大家詳細(xì)介紹了如何使用Python語(yǔ)言的netCDF4庫(kù)實(shí)現(xiàn)讀取.nc格式的數(shù)據(jù)文件,并提取指定維(時(shí)間、經(jīng)度與緯度)下的變量數(shù)據(jù),需要的可以了解下
    2024-02-02
  • Python捕獲異常堆棧信息的幾種方法(小結(jié))

    Python捕獲異常堆棧信息的幾種方法(小結(jié))

    這篇文章主要介紹了Python捕獲異常堆棧信息的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論

龙泉市| 大同市| 五寨县| 城步| 惠水县| 清徐县| 大埔区| 海伦市| 怀化市| 剑川县| 山西省| 吕梁市| 达拉特旗| 黄平县| 扶风县| 延庆县| 左云县| 鲜城| 故城县| 积石山| 平利县| 阿克陶县| 青田县| 清苑县| 伊宁县| 边坝县| 石渠县| 安化县| 黎川县| 翼城县| 汶川县| 淄博市| 五台县| 内江市| 左权县| 阳江市| 瑞安市| 万载县| 博野县| 博罗县| 彰化县|