HTTPX|Python 3的下一代HTTP客戶端

簡介

HTTPX 是最近 GitHub看的到一個比較火的一個項目,根據官網描述,總結有以下特色:python

  • 和使用 requests 同樣方便,requests 有的它都有
  • 加入 HTTP/1.1 和 HTTP/2 的支持。
  • 可以直接向 WSGI 應用程序或 ASGI 應用程序發出請求。
  • 處處都有嚴格的超時設置
  • 全類型註釋
  • 100% 的測試覆蓋率

    FastAPI中的簡單應用

文後的參考中給出了HTTPX基本使用舉例,在此不贅述。個人結論至少有二:
(1)簡化了傳統的同步HTTP操做
(2)簡化了異步HTTP操做(也是最大亮點吧)git

如今來看一個在FastAPI開發中測試API的基本例子:github

建立主模塊程序main.py

代碼以下:api

HTTPX|Python 3的下一代HTTP客戶端

編寫測試文件test_main.py

代碼以下:
HTTPX|Python 3的下一代HTTP客戶端異步

【注意】若是咱們想在測試中調用異步函數,咱們的測試函數也必須是異步的!Pytest爲此提供了一個整潔的庫,稱爲Pytest-asyncio,它容許咱們指定異步調用某些測試函數。安裝命令以下:async

HTTPX|Python 3的下一代HTTP客戶端

安裝了Pytest-asyncio後,pytest會自動判斷並調用它。若是不安裝這個pytest-asyncio庫,那麼上面代碼中從httpx導入AsyncClient時將出現語法錯誤,提供沒有這個類支持!!!ide

小結

httpx是一個正在成長中的年輕Python3庫,可是從github用戶關注度及Python應用需求現狀來看,這個庫很是有前景!不管在服務端開發方面,仍是在爬蟲開發方面。函數

參考

https://github.com/encode/httpx
https://www.python-httpx.org/advanced/
https://fastapi.tiangolo.com/advanced/async-tests/測試

相關文章
相關標籤/搜索