Linux中國
httpx:一個 Python Web 客戶端
Python 的 httpx 包是一個複雜的 Web 客戶端。當你安裝它後,你就可以用它來從網站上獲取數據。像往常一樣,安裝它的最簡單方法是使用 pip 工具:
$ python -m pip install httpx --user
要使用它,把它導入到 Python 腳本中,然後使用 .get 函數從一個 web 地址獲取數據:
import httpx
result = httpx.get("https://httpbin.org/get?hello=world")
result.json()["args"]
下面是這個簡單腳本的輸出:
{'hello': 'world'}
HTTP 響應
默認情況下,httpx 不會在非 200 狀態下引發錯誤。
試試這個代碼:
result = httpx.get("https://httpbin.org/status/404")
result
結果是:
<Response [404 NOT FOUND]>
可以明確地返回一個響應。添加這個異常處理:
try:
result.raise_for_status()
except Exception as exc:
print("woops", exc)
下面是結果:
woops Client error '404 NOT FOUND' for url 'https://httpbin.org/status/404'
For more information check: https://httpstatuses.com/404
自定義客戶端
除了最簡單的腳本之外,使用一個自定義的客戶端是有意義的。除了不錯的性能改進,比如連接池,這也是一個配置客戶端的好地方。
例如, 你可以設置一個自定義的基本 URL:
client = httpx.Client(base_url="https://httpbin.org")
result = client.get("/get?source=custom-client")
result.json()["args"]
輸出示例:
{'source': 'custom-client'}
這對用客戶端與一個特定的伺服器對話的典型場景很有用。例如,使用 base_url 和 auth,你可以為認證的客戶端建立一個漂亮的抽象:
client = httpx.Client(
base_url="https://httpbin.org",
auth=("good_person", "secret_password"),
)
result = client.get("/basic-auth/good_person/secret_password")
result.json()
輸出:
{'authenticated': True, 'user': 'good_person'}
你可以用它來做一件更棒的事情,就是在頂層的 「主」 函數中構建客戶端,然後把它傳遞給其他函數。這可以讓其他函數使用客戶端,並讓它們與連接到本地 WSGI 應用的客戶端進行單元測試。
def get_user_name(client):
result = client.get("/basic-auth/good_person/secret_password")
return result.json()["user"]
get_user_name(client)
'good_person'
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'application/json')])
return [b'{"user": "pretty_good_person"}']
fake_client = httpx.Client(app=application, base_url="https://fake-server")
get_user_name(fake_client)
輸出:
'pretty_good_person'
嘗試 httpx
請訪問 python-httpx.org 了解更多信息、文檔和教程。我發現它是一個與 HTTP 交互的優秀而靈活的模塊。試一試,看看它能為你做什麼。
via: https://opensource.com/article/22/3/python-httpx
作者:Moshe Zadka 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive
對這篇文章感覺如何?
太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
More in:Linux中國
捐贈 Let's Encrypt,共建安全的互聯網
隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
Let's Encrypt 正式發布,已經保護 380 萬個域名
由於 Let's Encrypt 讓安裝 X.509 TLS 證書變得非常簡單,所以這個數量增長迅猛。
關於Linux防火牆iptables的面試問答
Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
Lets Encrypt 已被所有主流瀏覽器所信任
旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...

















