问题标签 [httpx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
690 浏览

python - 如何在 Python 中使用 httpx(VS 请求)发出异步 HTTP 请求?

我是新手,httpx并且async无法将调用外部 API 的函数转换为requests使用httpx.

这是原始功能:

这就是我尝试过的:

但我不确定这是一个有效的代码以及如何测试它......

requests更改功能(版本)之前的测试示例;它用于patch模拟:

我花了很多时间试图弄清楚这一点,所以如果您对如何正确进行此转换以及如何测试它有任何建议 - 我将不胜感激。

0 投票
0 回答
54 浏览

python - 如何将异步请求与底层套接字请求分开

我正在调用以下JSON-EndPoint以检索reference_number.

对 3 个请求使用正常for循环,我已经能够为每个请求接收一个新令牌,如下所示:

输出:

现在,我正在尝试发送一个async请求,其中每个请求都使用它自己的会话,但对于同时发送的所有请求,我一直获得相同的值。

输出:

注意:我知道每个请求的值都会增加 1,但我不能使用这个解决方案,因为这个值需要由 生成,BackEnd API以便稍后使用它进行身份验证。

另一方面,我认为它与根据源 IP 地址进行控制无关,因为API一旦您单独点击,就已经生成了令牌。

我可以在请求之间设置一个时间延迟,但这会减慢我的整个操作。

我已经验证每个客户端都代表它自己的,这意味着每个请求的底层套接字标识符都不同。

输出:

这里有线索吗?因为我什至试图玩,HTTP Transport但我不知道该怎么做!

0 投票
0 回答
187 浏览

python - Python 请求/httpx 响应和垃圾收集

我最初是使用 httpx 发现的,但它也适用于更为人所知的请求,因此我将在示例中使用后者。

我正在并行发出多个请求,其中数据来自生成器,该生成器通过读取文件及时创建字节块。我设置了计数器/锁来限制并发请求的数量,以避免在内存中积累过多的数据。响应累积在一个列表中,因为我需要在完成后从标题中提取一些数据。

这并没有完全按预期工作,随着请求的执行,内存使用量似乎继续增加。我发现这是因为 requests 保留了对 request body 的引用,从而阻止了 ref 计数达到 0,因此数据没有被垃圾收集。

一个最小的可重现示例:

对于 httpx,引用存储在httpx.Response.request.stream._body.

我通过在累积响应之前删除对请求的引用解决了我的问题,但这是预期的吗?这很难追踪,在我看来,这会导致很多无意的内存泄漏,就像我正在经历的那样。

0 投票
0 回答
62 浏览

python - 我可以使用 httpx 等待页面加载吗?

我不会收到页面的所有代码。如何使页面上的所有脚本加载?

0 投票
0 回答
71 浏览

python-3.x - 诗歌依赖python3.4和httpx

我将 pyproject.toml 与诗歌一起使用(1.1.5,最新)。

我希望我的包支持 python>=3.4,如果它是 python>=3.6 httpx,那么也取决于 .

因此, pyproject.toml 是:

当我将, ,分配3.X给任何一个时(venv 中的 python 为 3.8)。3.53.63.7poetry lock

但是,当它是时3.4poetry lock报告SolverProblemError

我怎样才能让它工作python="^3.4"

0 投票
1 回答
228 浏览

python - 使用 httpx 进行身份验证问题

有效回复:

但使用httpx我得到:

完整追溯:

0 投票
0 回答
16 浏览

remote-server - 如何使用 httpx 获取远程地址?

使用requests,我们曾经response.raw._original_response.fp.raw._sock.getpeername()[0]获取Remote Address,但它不适用于 httpx ,那么如何使用httpx获取 Remote Address ?

截图: [在此处输入图像描述][1] [1]:https://i.stack.imgur.com/6lXS6.png

0 投票
1 回答
39 浏览

python-3.x - 为什么我们在发送异步请求时需要使用 Client 对象?

同步发送请求的接口很简单:

但是,当异步发送请求时,它会变得有点复杂:

为什么我们Client在发送异步请求时必须使用这些对象?为什么接口不能像发送同步请求时那样简单:

0 投票
1 回答
205 浏览

python - 使用 Python asyncio corurrent 发送网络请求时,如何让协程优先继续处理响应,而不是发送新请求?

如果我想请求一个 API 1000 次(发送网络请求并处理响应),它将在发送所有 1000 个请求后开始处理响应,然后处理响应。

如果完成,我可以告诉 asyncio 更喜欢返回等待位置代码吗?

结果

预期结果:</h3>

0 投票
1 回答
293 浏览

python - 异步使用authlib的httpx客户端的例子

这里有几个使用httpx客户端而不是requests使用流行的 oauth 库的基于会话的示例,authlib

但是在这些示例中,它们没有显示如何正确打开和关闭异步httpx会话。见https://www.python-httpx.org/async/

当我尝试按照建议使用它时,我会收到有关会话未关闭的警告:

用户警告:未关闭 <authlib.integrations.httpx_client.oauth2_client.AsyncOAuth2Client 对象位于 0x000001B6444BFEB0>。有关详细信息,请参阅https://www.python-httpx.org/async/#opening-and-closing-clients

如果我打电话两次,我得到

RuntimeError:事件循环已关闭

这对我来说很有意义,因为authlibs 文档中的示例没有为异步会话使用上下文管理器