我通过继承Greenlet
来创建任务。我有一个单一的父任务,在start()
的两个孩子上调用_run()
。在其他地方(恰好是系统服务)start()
和join()
被调用。
行为似乎是正确的。例如,使用带有超时的Queue
可以达到预期的效果,但是我还没有找到一个很好的方法来关闭来自KeyboardInterrupt
的孩子,或者通过为{的父任务注册回调来{1}}。在处理程序中,我会调用SIGTERM
和' child2.kill()child1.kill()
GreenletExit`。
我从来没有给孩子打电话but only the first called seemed to raise
,我也不确定如何正确地做到这一点。我在滥用图书馆吗?
答案 0 :(得分:0)
我的错误是我在子任务中处理gevent.greenlet.GreenletExit
。如果您需要处理退出,您可以捕获并重新加载此异常。