正确处理儿童绿条

  • 本文关键字:理儿 处理 greenlets
  • 更新时间 :
  • 英文 :


我通过继承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。如果您需要处理退出,您可以捕获并重新引发此异常。

最新更新