gpt4 book ai didi

python - 如何取消进行中的 Requests.Session.Get 请求?

转载 作者:行者123 更新时间:2023-11-28 21:25:43 26 4
gpt4 key购买 nike

所以我有一个辅助线程,它使用 https 监听来自服务器的信息。我正在使用 Python 的 Requests.Session 并在没有超时的情况下调用 get(),因为我们确实想等待一些响应。

但是,在关闭时,我想很好地结束我所有的辅助线程。我不确定如何终止线程阻塞的获取请求。在 *nix 环境中,关闭 session 的底层套接字将最终抛出异常。这就是做到这一点的方法;关闭套接字,捕获异常,开心点。在 Windows 上这似乎不起作用。

终止/结束 session 和获取请求以便我的辅助线程终止的正确方法是什么?

澄清:我正在使用 Python 的 Requests.Session.get()。

最佳答案

在查看了我能想到的所有内容后,看起来 requests 没有办法在不一直深入到套接字级别的情况下取消正在进行的请求。而且,正如 OP 所指出的那样,即使那样也不能直接在 Windows 上提供帮助,除非您实际上进入了底层的选择或池循环而不是仅仅关闭套接字。 (如果您不关心 Windows,您可以更轻松地通过 向线程发出信号 来取消读取……)所以,这已经差不多了。

一种替代方法是终止线程,或者让操作系统为您完成。如果该线程也做其他工作……好吧,您可以总是将它拆分到不同的线程中。但这可能是对代码的重大且无根据的重写。

所以,听起来您需要放弃 requests 并使用其他东西。

cURL 库绝对有取消请求的能力。有一组官方绑定(bind)称为 pycurl ,但它比 requests 级别低得多,因此您可能想要查看 69105 更高级别的包装器,您可以通过搜索 PyPI 找到它。 .其中一些不是很完整/稳定/最新,因此您可能需要多花些功夫才能找到适合您的……

关于python - 如何取消进行中的 Requests.Session.Get 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13809336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com