gevent、requests和未处理的异常

2 投票
1 回答
1975 浏览
提问于 2025-04-17 19:47

我有一段代码:

import gevent
import gevent.monkey; gevent.monkey.patch_all()
import requests

def func():
    try:
        requests.get('http://unavailable-host/')
    except:
        pass

def main():
    jobs = [gevent.spawn(func) for i in xrange(10)]
    gevent.joinall(jobs)

if __name__ == '__main__':
    main()

这个脚本通常不会输出任何东西。但是有时候(大约每五次运行一次),我会收到这个消息:

Unhandled exception in thread started by
sys.excepthook is missing
lost sys.stderr

请告诉我,为什么会发生这种情况,以及正确的解决办法是什么?另外,如果我在

gevent.sleep(1)

之后添加

gevent.joinall(jobs)

,那么脚本就总是不会输出任何东西,一切都正常。