Я создаю задачи, наследуя от Greenlet
. У меня есть одна родительская задача, которая вызывает start()
у двух детей в своем _run()
. В другом месте (это сервис systemd) вызываются start()
и join()
.Правильное обращение с ребенком Greenlets
Поведение кажется правильным. Например, использование Queue
с таймаутами достигает желаемого эффекта, но я не нашел хорошего способа отключить детей от имени KeyboardInterrupt
или зарегистрировав обратный вызов родительской задачи для SIGTERM
. В обработчике я бы назвал child1.kill()
и 'child2.kill() but only the first called seemed to raise
GreenletExit`.
Я никогда не звоню join()
на детей, и я не уверен, как я это сделаю правильно. Я злоупотребляю библиотекой?