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