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