Python Multiprocessing респаун аварийных процессов - PullRequest
4 голосов
/ 29 января 2011

Я хочу создать несколько рабочих процессов, и если они выйдут из строя из-за исключения, я бы хотел, чтобы они возродились.Помимо метода is_alive в многопроцессорном модуле, я не могу найти способ сделать это.

Это потребует от меня перебора всех запущенных процессов (после сна) и проверки, если онив живых.По сути, это загруженный цикл, мне было интересно, есть ли лучшее решение, которое разбудит мою программу в случае сбоя любого из моих рабочих процессов.Как только он проснется, я хотел бы зарегистрировать исключение, вызвавшее сбой моей программы, и запустить другой процесс.

Ответы [ 3 ]

2 голосов
/ 29 января 2011

Опрос, чтобы увидеть, живы ли дочерние процессы, должен работать нормально, так как это проверка с минимальными издержками, и вам не нужно проверять это часто.

Первый ответ на этот (похожий) вопрос имеетпример кода Python: Мониторинг нескольких серверов / автоматический перезапуск в python

1 голос
/ 29 января 2011

Если вы работаете в Unix-подобной системе, ваша основная программа может быть уведомлена о мертвых детях, установив обработчик сигнала .Посмотрите документацию вашей операционной системы на signal(), особенно на SIGCHLD.Боюсь, я не помню, покрывает ли Windows SIGCHLD своей очень ограниченной поддержкой сигнала POSIX.

1 голос
/ 29 января 2011

Вы можете обернуть ваши рабочие процессы в блоки try / Кроме того, где исключение помещает сообщение в канал перед поднятием. Конечно, опрос не так уж и плох, и он проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...