Я пытаюсь запустить несколько рабочих процессов 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: Извинения, но я не могу дать вам работающий код, так как я должен был указать местоположение, используя код