下面带有示例代码,如果订户中断页面在client.connect和client.close()之间加载,则cherrypy将挂起并且不会清除已使用的资源,例如: 1)打开tcp套接字(从该服务器上的netstat -anpt我看到建立到服务器的tcp连接已经建立了几天,而执行任何命令的时间应在10秒内完成) 2)从ps -p'cherrypy pid'H中,我看到,线程数增加了,而线程数等于未关闭的TCP连接数
在调试此代码时,我发现线程在while循环中停止在“ yield bytes(a,'utf-8')”。 那么,有什么办法可以说是在超时后杀死线程吗?
P.S。 response.timeout = 30已经在配置中设置了,这没有帮助
@cherrypy.expose
def test(self, *args, **kwargs):
...
...
def getData(host, cmd):
html = open("menuRp1.html").read()
yield bytes(html, 'utf-8')
client = paramiko.SSHClient()
client.connect(hostname=host, username=user, password=pwd, port=22)
stdin, stdout, stderr = client.exec_command(cmd)
a=stdout.readline()
while a:
yield bytes(a, 'utf-8')
a=stdout.readline()
client.close()
html = open("menuRp2.html").read()
yield bytes(html, 'utf-8')
return getData(h, c)
test._cp_config = {'response.stream': True}