正确处理儿童Greenlets

时间:2016-10-23 02:16:39

标签: greenlets

我通过继承Greenlet来创建任务。我有一个单一的父任务,在start()的两个孩子上调用_run()。在其他地方(恰好是系统服务)start()join()被调用。

行为似乎是正确的。例如,使用带有超时的Queue可以达到预期的效果,但是我还没有找到一个很好的方法来关闭来自KeyboardInterrupt的孩子,或者通过为{的父任务注册回调来{1}}。在处理程序中,我会调用SIGTERM和' child2.kill()child1.kill() GreenletExit`。

我从来没有给孩子打电话but only the first called seemed to raise,我也不确定如何正确地做到这一点。我在滥用图书馆吗?

1 个答案:

答案 0 :(得分:0)

我的错误是我在子任务中处理gevent.greenlet.GreenletExit。如果您需要处理退出,您可以捕获并重新加载此异常。