Код возврата всегда 0 для запуска параллельных рабочих процессов Alteryx в Python с использованием подпроцесса - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь запустить несколько рабочих процессов Alteryx в Python параллельно, используя Subprocess. Вот сценарий.

import subprocess
import os
import time

workflows =["C:\\Users\\vevek.seetharaman\\Sample2.yxmd","C:\\Users\\vevek.seetharaman\\Sample.yxmd"]

processes = []
for file in workflows:
    p = subprocess.Popen(["C:\\Users\\vevek.seetharaman\\AppData\\Local\\Alteryx\\bin\\AlteryxEngineCmd.exe", file],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    processes.append(p)
    print(processes)
    
for i in processes:
    while i.poll() is None:
        # Process hasn't exited yet, let's wait some
        time.sleep(0.5)
    

res = processes[0].communicate()
print("return code =", processes[0].returncode)
print("stderr =", res[1])

res2 = processes[1].communicate()
print("return code =", processes[1].returncode)
print("stderr =", res2[1])

Он завершает выполнение кода, однако не выдает правильный код возврата ** (он всегда равен 0) **, хотя я вызвал ошибку в одном из рабочий процесс для отладки кода.

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

workflow1 = "C:\\Users\\vevek.seetharaman\\Sample 2.yxmd"
subprocess.run(["C:\\Users\\vevek.seetharaman\\AppData\\Local\\Alteryx\\bin\\AlteryxEngineCmd.exe", workflow1])

Вывод - Код возврата = 0 # Обозначение ошибки (это рабочий процесс, который я сознательно создал)

 workflow2 = "C:\\Users\\vevek.seetharaman\\Sample.yxmd"  


subprocess.run(["C:\\Users\\vevek.seetharaman\\AppData\\Local\\Alteryx\\bin\\AlteryxEngineCmd.exe", workflow2])

Вывод - Код возврата = 1 # Обозначение успеха

PS: Извинения, но я не могу дать вам работающий код, так как я должен был указать местоположение, используя код

...