Setup limit concurrent runs สำหรับ backfill pipeline ใน Dagster

เนื่องจากว่า dagster เวลาที่เรากดรัน backfill ไปหลายๆ job จะทำการรันแบบ parallel (default จะอยู่ที่ 10 Dagster Docs Run limits)
ซึ่งอาจทำให้ resource ไม่พอใช้ หรือ อาจจะเสร็จช้าไป :laughing:

วิธีที่จะกำหนด limit ให้กับ job ก็จะทำตามนี้ คือเพิ่ม config ที่ run_coordinator ในไฟล์ dagster.yaml

run_coordinator:
  module: dagster.core.run_coordinator
  class: QueuedRunCoordinator
  config:                    # config ที่เพิ่มเข้าไป
    tag_concurrency_limits:
      - key: "dagster/backfill"
        limit: 1
      - key: "sample"
        limit: 4

โดย key จะหมายถึง tag ที่เราจะกำหนด limit จากรูปตัวอย่างข้างบน dagster/backfill จะเป็น tag ที่ dagster สร้างให้ตอนเรากดรันแบบ backfill เหมือนในรูปจะเป็น backfill: ____


ส่วนข้างล่างเป็นวิธีที่เราสามารถทำหนด tags ให้กับ job เราได้แบบนี้

sample_processing_job = sample_graph_processing.to_job(
    tags={"sample": "sample_1"}
)

แล้วก็ไปกำหนด tag_concurrency_limit ให้ Dagster limit ไว้เฉพาะ tag ที่เราสร้างไว้ตามนี้

run_coordinator:
  ...
  config:
    tag_concurrency_limits:
      - key: "sample"
        value: "sample_1"
        limit: 2
      - key: "daster/backfill"
        limit: 4

แบบนี้เวลาที่เรารัน backfill ที่ job sample_processing_job มันจะรันแค่ 2 concurrences

1 Like