由于同步通信,线程太多

时间:2010-05-10 20:54:55

标签: python multithreading xml-rpc

我在python中同时使用线程和xmlrpclib。我会定期创建一堆线程,通过xmlrpclib在远程服务器上完成服务。问题是,有时远程服务器无法应答。这导致线程永远等待它永远不会得到的响应。随着时间的推移,处于此状态的线程数会增加并将达到系统上允许的最大线程数(我正在使用fedora)。 我试着使用socket.setdefaulttimeout(10);但是由此创建的异常将导致服务器失效。我在服务器端使用它,但它似乎不起作用:/

知道如何处理这个问题?

2 个答案:

答案 0 :(得分:1)

你正在做我通常所说的(最初是西班牙语xD)“快乐的道路编程”。你应该实现你的程序来处理不需要的情况,而不仅仅是你想要发生的情况。

此处的线程只显示一个潜在的错误:您的服务器无法处理超时,并且实现是严格的,因为添加超时会导致服务器因未处理的异常而崩溃。

更强大地实现它:它必须能够承受异常,服务器不能因为行为不端的客户端而死亡。如果您现在不解决此类问题,稍后可能会出现类似问题。

答案 1 :(得分:0)

似乎你真正的问题是服务器挂起某些请求,如果客户端关闭套接字,就会死掉 - 线程只是实现的副作用。如果我理解你正确说的是什么,那么解决这个问题的唯一方法就是修复服务器以响应所有请求,或者更好地解决网络故障,或者(最好)两者。