gpt4 book ai didi

python - 中止长时间运行的 http 操作

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:09 28 4
gpt4 key购买 nike

在我的 (python) 代码中,我有一个线程监听来自 couchdb 提要的更改 ( continuous changes )。更改请求有一个 timeout parameter这在某些情况下太大了(例如,当用户想要使用 ^C 手动中断程序时)。

  • 如何中止长时间运行的阻塞 http 请求?
  • 这可能吗,或者我是否需要减少超时以使我的程序响应更快?

这将是不幸的,因为超时小到足以使程序真正响应(例如,1 秒),意味着有很多连接被创建(每秒一个!),这违背了监听变化的目的,并且很难确保我们没有遗漏任何更改(在重新连接的时间跨度中,我们确实会遗漏更改,因此需要特殊代码来处理这种情况)

另一种选择是强行中止线程,但是that is not really an option in python .

最佳答案

如果我理解正确的话,看起来您在决定是否响应用户之前在两次请求之间等待的时间太长了。你是对的,不断关闭和创建新连接将破坏更改提要的目的。

解决方案可能是使用 heartbeat couchdb 将继续发送换行符以告诉客户端连接仍然存在的查询参数。

http://localhost:5984/hello/_changes?feed=continuous&heartbeat=1000&include_docs=true

只要您收到心跳(换行符),就可以确定您收到了新的更改。新行将指示未发生任何更改。作为一个实际的变化将被报告回来。无需关闭连接。响应您的客户 if resp!="/n"

关于python - 中止长时间运行的 http 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24547851/

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