我有代码:GEVENT,请求和未处理的异常
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()
这通常脚本没有输出。但有时(在1 5的运行)我得到这个消息:
Unhandled exception in thread started by
sys.excepthook is missing
lost sys.stderr
我解释,为什么出现这种情况,什么是正确的解决方案?另外,如果我加入
gevent.sleep(1)
后
gevent.joinall(jobs)
脚本始终没有输出,一切正常。
当我使用grequests我收到_ConnectionError_在安慰。 Grequest对我来说不是很好的变体,因为我想用同步风格编写代码并发送不同请求的链。有没有其他变体来解决_unhandled exception_问题,而不是gevent.sleep(1)? – 2013-03-20 20:49:49
@Chrome嗯。我懂了。在第二次检查中,它看起来与gevent/stdlib-socket问题无关。请参阅编辑新答案。 – 2013-03-20 21:14:31