A zombie - это процесс, который завершен, но завершение которого еще не было замечено процессом, который его запустил.Процесс Twisted обязан пожинать своих потомков.
Если вы начнете процесс с spawnProcess
, все всегда должно работать как положено.Однако, как описано в ошибка № 733 в Twisted (которая давно исправлена), существует множество неприятных крайних случаев, когда вы хотите использовать Twisted с другими функциями, которые порождают процессы, как исторически API Pythonзатрудняет взаимодействие между обработчиками сигналов.
Это все исправлено в последних версиях кода, но я полагаю, что вы все еще можете столкнуться с этой ошибкой в следующих условиях:
- Вывы используете версию Twisted ранее, чем 10.1.
- Вы используете версию Python ранее, чем 2.6.
- Вы не создаете собственные модули расширения Twisted (если вы работаете с разработкойоформить заказ или распаковать архив, а не установленную версию, вы можете исправить это с помощью
python setup.py build_ext -i
). - Вы используете такой модуль, как
popen
или subprocess
.
Надеемсяобновление Twisted или запуск соответствующей команды решит вашу непосредственную проблему, но вы все равно должны рассмотреть возможность использования spawnProcess
, так как это позволяет вам лечитьвывод процесса как обычного события в цикле событий реактора.