问题标签 [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.
python - 如何在 Python 中使用 httpx(VS 请求)发出异步 HTTP 请求?
我是新手,httpx
并且async
无法将调用外部 API 的函数转换为requests
使用httpx
.
这是原始功能:
这就是我尝试过的:
但我不确定这是一个有效的代码以及如何测试它......
requests
更改功能(版本)之前的测试示例;它用于patch
模拟:
我花了很多时间试图弄清楚这一点,所以如果您对如何正确进行此转换以及如何测试它有任何建议 - 我将不胜感激。
python - 如何将异步请求与底层套接字请求分开
我正在调用以下JSON-EndPoint以检索reference_number
.
对 3 个请求使用正常for
循环,我已经能够为每个请求接收一个新令牌,如下所示:
输出:
现在,我正在尝试发送一个async
请求,其中每个请求都使用它自己的会话,但对于同时发送的所有请求,我一直获得相同的值。
输出:
注意:我知道每个请求的值都会增加 1,但我不能使用这个解决方案,因为这个值需要由 生成,
BackEnd API
以便稍后使用它进行身份验证。
另一方面,我认为它与根据源 IP 地址进行控制无关,因为API
一旦您单独点击,就已经生成了令牌。
我可以在请求之间设置一个时间延迟,但这会减慢我的整个操作。
我已经验证每个客户端都代表它自己的,这意味着每个请求的底层套接字标识符都不同。
输出:
这里有线索吗?因为我什至试图玩,HTTP Transport
但我不知道该怎么做!
python - Python 请求/httpx 响应和垃圾收集
我最初是使用 httpx 发现的,但它也适用于更为人所知的请求,因此我将在示例中使用后者。
我正在并行发出多个请求,其中数据来自生成器,该生成器通过读取文件及时创建字节块。我设置了计数器/锁来限制并发请求的数量,以避免在内存中积累过多的数据。响应累积在一个列表中,因为我需要在完成后从标题中提取一些数据。
这并没有完全按预期工作,随着请求的执行,内存使用量似乎继续增加。我发现这是因为 requests 保留了对 request body 的引用,从而阻止了 ref 计数达到 0,因此数据没有被垃圾收集。
一个最小的可重现示例:
对于 httpx,引用存储在httpx.Response.request.stream._body
.
我通过在累积响应之前删除对请求的引用解决了我的问题,但这是预期的吗?这很难追踪,在我看来,这会导致很多无意的内存泄漏,就像我正在经历的那样。
python - 我可以使用 httpx 等待页面加载吗?
我不会收到页面的所有代码。如何使页面上的所有脚本加载?
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.5
3.6
3.7
poetry lock
但是,当它是时3.4
,poetry lock
报告SolverProblemError
:
我怎样才能让它工作python="^3.4"
?
python - 使用 httpx 进行身份验证问题
有效回复:
但使用httpx
我得到:
完整追溯:
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
python-3.x - 为什么我们在发送异步请求时需要使用 Client 对象?
同步发送请求的接口很简单:
但是,当异步发送请求时,它会变得有点复杂:
为什么我们Client
在发送异步请求时必须使用这些对象?为什么接口不能像发送同步请求时那样简单:
python - 使用 Python asyncio corurrent 发送网络请求时,如何让协程优先继续处理响应,而不是发送新请求?
如果我想请求一个 API 1000 次(发送网络请求并处理响应),它将在发送所有 1000 个请求后开始处理响应,然后处理响应。
如果完成,我可以告诉 asyncio 更喜欢返回等待位置代码吗?
结果
预期结果:</h3>
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:事件循环已关闭
这对我来说很有意义,因为authlib
s 文档中的示例没有为异步会话使用上下文管理器