선택한 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 제출은 새
runKey와commandId를 받는 새 실행 의도입니다. - 제출 하나가 거부되면 그 앞에서 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를 유지합니다.