【问题标题】:too many threads due to synch communication由于同步通信,线程过多
【发布时间】:2010-05-10 20:54:54
【问题描述】:

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

知道如何处理这个问题吗?

【问题讨论】:

    标签: python multithreading xml-rpc


    【解决方案1】:

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

    这里的线程只显示了一个潜在的错误:您的服务器无法处理超时,并且实现是僵化的,添加超时会导致服务器由于未处理的异常而崩溃。

    更健壮地实现它:它必须能够承受异常,服务器不能因为客户端行为不端而死。如果您现在不解决此类问题,您以后可能会遇到类似问题。

    【讨论】:

      【解决方案2】:

      看起来你真正的问题是服务器在某些请求上挂起,如果客户端关闭套接字,并且就会死掉——线程只是实现的副作用。如果我理解您的意思正确,那么解决此问题的唯一方法是修复服务器以响应所有请求,或者在网络故障时更加健壮,或者(最好)两者兼而有之。

      【讨论】:

        猜你喜欢
        • 2012-03-06
        • 2011-02-11
        • 1970-01-01
        • 2020-02-01
        • 1970-01-01
        • 2021-03-17
        • 2021-04-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多