본문으로 건너뛰기

선택한 Connected Flow 함께 실행하기

용도

client.run_many(...)client = px.Client(...)로 만든 Client 객체의 메서드입니다. 선택한 Report connection마다 독립 Flow Run을 하나씩 시작합니다.

화면에서 보이는 것

Report Workbench의 Run selected와 같은 작업입니다. Project Activity는 한 번에 시작한 Run을 함께 보여 주며 각 Run의 상태, 취소, 재시도와 Result는 connection별로 표시합니다.

문법

python
client.run_many(connections)

예제

python
from pipelinexlab import px
from project_reports.girder_review import (
    alternate_strength,
    serviceability,
    strength,
)


client = px.Client(workspace="engineering", project="bridge_project")
runs = client.run_many([
    strength,
    serviceability,
    alternate_strength,
])

가져온 세 이름은 Report 작성 파일에서 report.connect_flow(...)으로 만든 뒤 report.save()로 저장한 connection입니다.

매개변수

이름설명
connections함께 시작할 저장된 connection 목록

반환

connection별 Run 객체의 list를 반환합니다. 각 Run은 독립 Run의 상태와 Result를 추적합니다.

규칙

  • N개 connection은 N개의 독립 Run을 만듭니다.
  • 서로 다른 Flow를 가리키는 connection과 같은 Flow를 다른 key로 사용하는 connection을 함께 전달할 수 있습니다.
  • Runtime은 Project의 resource·license 한도 안에서 Run을 병렬로 처리합니다.
  • Python client는 supervisor의 one-request-in-flight 규율에 맞춰 모든 connection을 먼저 확인한 뒤 제출 응답을 목록 순서대로 하나씩 받습니다. 이 순차 구간은 제출뿐이며 Run 완료를 기다리지 않습니다.
  • 각 connection 제출은 새 runKeycommandId를 받는 새 실행 의도입니다.
  • 제출 하나가 거부되면 그 앞에서 accepted된 Run은 그대로 유지하고 이후 connection은 제출하지 않습니다. run_many는 rollback transaction이 아닙니다.
  • 이 거부는 px.Error로 잡습니다. 잡은 refusal의 accepted_runs는 이미 accepted된 Run 객체의 tuple이고, failed_index는 거부된 connection이 connections에서 가지고 있던 위치입니다. 이어서 제출할 때는 메시지를 읽지 말고 connections[refusal.failed_index:]를 다시 전달합니다. diagnostics, detail, refusal_reason은 거부한 제출이 답한 값 그대로 입니다.
python
try:
    runs = client.run_many([strength, serviceability, alternate_strength])
except px.Error as refusal:
    runs = list(refusal.accepted_runs)
    remaining = [strength, serviceability, alternate_strength][refusal.failed_index:]
    for diagnostic in refusal.diagnostics:
        handle(diagnostic.code)
  • connection 목록 순서, Report 표시 순서와 완료 순서는 Flow 사이의 실행 순서를 만들지 않습니다.
  • Flow B가 Flow A의 Result를 사용하면 상위 Flow에서 Node 또는 Subflow를 연결하고 그 상위 Flow를 Report connection 하나로 실행합니다.
  • Project Activity는 Run을 모아 보여 주는 UI 표시 단위이며 각 Run은 독립 상태와 Result를 유지합니다.

다음 단계