Продолжить выполнение python после сбоя подпроцесса с «Исключением с плавающей запятой (ядро сброшено)» - PullRequest
0 голосов
/ 23 января 2020

Из моего скрипта python 3.6 я должен использовать внешнюю программу (двоичную), которая в настоящее время имеет известную ошибку, возникающую время от времени по заданным причинам, и аварийно завершает свою работу + моя основная python программа, говорящая Floating point exception (core dumped) .

Я хочу иметь возможность перехватить и / или игнорировать эту ошибку, чтобы мой python сценарий мог продолжить выполнение. Я уже знаю, что не могу использовать обычный синтаксис try / catch, но мне действительно нужно go обойти эту ошибку, какой бы ни была стратегия. Тем не менее, я понятия не имею, как.

Мой код выглядит так:

#!/usr/bin/env python3
import subprocess

for i in range(1000):

  my_cmd = 'CALL TO PROGRAM THAT BUGS 20% OF THE TIME'
  my_process = subprocess.Popen([my_cmd], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  cmd_out = my_process.communicate()[1].decode() # this should correctly wait for termination

  # here python exits when my_cmd crashed because of FPE

  if my_process.returncode == 0:
    print('All good')
  else:
    print('Program crashed:', cmd_out) # never printed

  # here I want to be able to go to the next loop iteration and perform all 1000 iterations

На cra sh все, что я получил, это распечатка, похожая на эту:

All good
All good
All good
All good
Floating point exception (core dumped)

Не могли бы вы дать предложения?

Большое спасибо

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