跳转到主要内容

使用requests通过UNIX域套接字进行HTTP通信

项目描述

Latest Version on PyPI https://github.com/msabramo/requests-unixsocket/actions/workflows/tests.yml/badge.svg

使用requests通过UNIX域套接字进行HTTP通信

用法

显式

您可以通过实例化一个特殊的Session对象来使用它

import json

import requests_unixsocket

session = requests_unixsocket.Session()

r = session.get('http+unix://%2Fvar%2Frun%2Fdocker.sock/info')
registry_config = r.json()['RegistryConfig']
print(json.dumps(registry_config, indent=4))

隐式(猴子补丁)

猴子补丁允许您使用此模块的功能,同时尽可能减少对代码的修改。请注意,在上面的示例中,我们必须实例化一个特殊的requests_unixsocket.Session对象,并调用该对象上的get方法。调用requests.get(url)(使用requests的最简单方法,可能是最常见的),将不会工作。但我们可以通过猴子补丁来实现这一点。

您可以在全局范围内进行猴子补丁

import requests_unixsocket

requests_unixsocket.monkeypatch()

r = requests.get('http+unix://%2Fvar%2Frun%2Fdocker.sock/info')
assert r.status_code == 200

或者您可以使用上下文管理器临时进行操作

import requests_unixsocket

with requests_unixsocket.monkeypatch():
    r = requests.get('http+unix://%2Fvar%2Frun%2Fdocker.sock/info')
    assert r.status_code == 200

抽象命名空间套接字

要连接到抽象命名空间套接字(仅限Linux),请将名称前缀为一个空字节(即:0) - 例如

import requests_unixsocket

session = requests_unixsocket.Session()
res = session.get('http+unix://\0test_socket/get')
print(res.text)

有关说明此内容的示例程序,请参阅git存储库中的examples/abstract_namespace.py。由于抽象命名空间套接字是Linux特有的,因此该程序仅在Linux上工作。

另请参阅

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

requests-unixsocket-0.3.0.tar.gz (14.5 kB 查看散列)

上传时间 源代码

构建分布

requests_unixsocket-0.3.0-py2.py3-none-any.whl (11.8 kB 查看散列)

上传时间 Python 2 Python 3

支持