调用requests.get(...)随机杀死线程。为什么呢?

时间:2018-06-07 19:19:40

标签: python multithreading python-2.7 python-requests python-multithreading

我有一个 Python 2.7脚本,其中我使用requests.get(...)以顺序方式向许多服务器进行GET调用。然而,有时候,在拨打requests.get(...)电话时,我拨打电话的话会被杀死,我不知道为什么。我知道这是因为我在拨打电话之前和之后打印了日志,最后一个日志条目始终是拨打电话之前的日志。使用以下命令进行调用:

r = requests.get("http://" + node.hostname + ":2082/api/config", timeout=1)

这是进行调用的方法的基本框架:

def refresh_current_configs(number):
    while True:
        try:
            for node in nodes:
                try:
                    r = requests.get("http://" + node.hostname + ":2082/api/config", timeout=1)
                except (ConnectionError, requests.exceptions.Timeout) as e:
                    unreachable_nodes.add(node.hostname)
                    continue

                # Do processing

        except Exception,e:
            logger.error(e + " -- " + str(number))
        time.sleep(1000)

这就是我创建一个在主线程中运行refresh_current_configs方法的线程的方法:

consumer = threading.Thread(target=refresh_current_configs,args=(number,),name='config_refresher')
consumer.start()

为什么调用requests.get(...)的任何想法会随机杀死调用的主题?

0 个答案:

没有答案