gpt4 book ai didi

python - cherrypy 检查连接状态

转载 作者:行者123 更新时间:2023-12-01 05:50:32 27 4
gpt4 key购买 nike

我有一个cherrypy api,旨在在服务器上运行很长时间。

我有一个不可靠的客户端,它可能会因我无法控制的各种原因而终止或关闭连接。

在我的服务器 api 运行期间,我想定期检查连接状态,确保客户端仍在监听,并在客户端消失时中止我的操作。

我找不到任何描述如何在提供cherrypy请求时轮询连接状态的好地方。

这种长时间运行的一个例子是在小缓冲区(有限的内存) block 中计算多个大文件(数十 GB)的 md5。

我不需要任何缩短运行时间的解决方案,因为这不是我的目标。我想尽可能长时间地保持此连接打开,但如果它关闭则中止。

这是我的代码的简单示例:

@cherrypy.expose
def foo(self):
cherrypy.response.headers['Content-Type'] = 'text/plain'
def run():
for result in get_results(): # get_results() is a heavy method mentioned
yield json.dumps(result)
return run()
foo._cp_config = {'response.stream': True}

最佳答案

知道客户端已死亡的唯一可靠方法是尝试向套接字写入一些数据,对于 CherryPy 可以使用 yield 来完成此操作。 。您必须生成非空字符串,因此您必须返回一个可以处理一些填充文本的 Content-Type,例如开头 <head> 后的一些额外空格。 HTML 文档的标签。如果客户端关闭连接,CherryPy 服务器将停止从处理程序请求额外生成的数据(并调用生成器上的任何 close 方法,以便您可以进行清理)。

关于python - cherrypy 检查连接状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14472301/

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