Im пытается создать способ уловить ошибки в моем сценарии импорта базы данных, так как требуется очень много времени для запуска.Использование подпроцесса на уже запущенном скрипте для контроля кода возврата
я пытался до того, чтобы следить за сообщаться() перед моей Docker ехес команды, но до недавнего времени я узнал, что сценарий в вопросе «import.pl» выполняются за пределами грузчика, и я могу контролировать его с
ps aux | grep perl
Так это то, что я в настоящее время,
#!/usr/bin/python
import sys
import subprocess
cities = ["x","y", "z"];
uncompletedcities = []
for x in cities:
dockerscript = "docker exec -it docker_1 perl ./import.pl %s %s" % (x,x)
p = subprocess.Popen(dockerscript, shell=True, stderr=subprocess.PIPE)
error = p.communicate()
if p.returncode != 0:
uncompletedcities.append(x)
while p.poll() == None:
print p.stderr.read()
print (uncompletedcities)
Но я не мог получить правильный вывод.
Использования
check_output(["pidof", "perl"])
Я возвращаю Идентификатор сценария вот в вопросе.
Вопрос в том, как я могу использовать подпроцесс или другую библиотеку в python для мониторинга уже запущенного pid до тех пор, пока он не достигнет EOL и не завершится с кодом возврата.