Cherrypy:中断页面加载后清理资源

时间:2019-06-26 02:27:39

标签: python-3.x python-multithreading cherrypy

下面带有示例代码,如果订户中断页面在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} 

0 个答案:

没有答案