2016-10-23 5 views
1

Greenletから継承してタスクを作成しています。私は_run()の2人の子供のためにstart()を呼び出す単一の親タスクを持っています。他の場所(システム・サービスの場合)start()join()が呼び出されます。子供の適切な処理Greenlets

動作は正しいようです。たとえば、Queueをタイムアウトで使用すると、目的の効果が得られますが、KeyboardInterruptというように子プロセスをシャットダウンする方法や、SIGTERMの親タスクにコールバックを登録する方法がありません。ハンドラでは、child1.kill()と 'child2.kill()but only the first called seemed to raise GreenletExit`を呼び出します。

私は決してjoin()と子供に電話することはありません。私はこれを正しく行う方法がわかりません。ライブラリを誤用していますか?

答えて

0

私のエラーは、私が子タスクでgevent.greenlet.GreenletExitを処理していたことでした。出口を処理する必要がある場合は、この例外を捕捉して再度呼び出すことができます。

関連する問題