The HITL Operator

Apache Airflow เบื้องต้นด้วย Python

Mike Metzger

Data Engineer

Human-In-The-Loop คืออะไร?

  • เวิร์กโฟลว์ปัจจุบันทั้งหมดทำงานอัตโนมัติตั้งแต่ต้นจนจบ
  • จัดการปัญหาบางอย่างได้ (ความล้มเหลว การแจ้งเตือน ฯลฯ) ด้วยตัวเลือกที่มีอยู่
  • ไม่สามารถ "ตรวจสอบ" สถานการณ์ที่น่ากังวลหรือรายละเอียดสำคัญได้
  • Human-In-The-Loop operators ช่วยให้เพิ่มการโต้ตอบของมนุษย์เข้าไปในเวิร์กโฟลว์ได้

ภาพบุคคลกำลังเขียนโค้ดที่คอมพิวเตอร์

Apache Airflow เบื้องต้นด้วย Python

Operator แต่ละประเภท

  • HITL คือกลุ่มของ operator
  • Operator แต่ละตัวมีรูปแบบการโต้ตอบที่ต่างกัน
  • HITL operators มีทั้งหมด 4 ประเภท
Apache Airflow เบื้องต้นด้วย Python

HITL Operators

  • HITLOperator: คลาสพื้นฐานของ HITL operators ทั้งหมด ทำให้ task อยู่ในสถานะรอ (deferred) เพื่อคืน worker slot ขณะรอการตอบสนอง
  • HITLBranchOperator: ใช้สำหรับการตัดสินใจแบบ manual เพื่อกำหนดเส้นทาง task ที่ DAG จะดำเนินต่อไป
  • HITLEntryOperator: ให้ผู้ใช้กรอกข้อมูลแบบมีโครงสร้างผ่าน TriggerForm ซึ่งจะถูกตรวจสอบและจัดเก็บใน XCom สำหรับ task ถัดไป
  • ApprovalOperator: Operator เฉพาะทางที่แสดงตัวเลือก "Approve" หรือ "Reject" ให้ผู้ใช้
Apache Airflow เบื้องต้นด้วย Python

ApprovalOperator

  • from airflow.providers.standard.operators.hitl import ApprovalOperator
  • Attributes:
    • subject - หัวเรื่อง/ชื่อของการอนุมัติ
    • body - เนื้อหาของข้อความ
    • execution_timeout - timedelta ที่รอการตอบสนอง
    • defaults - ค่าเริ่มต้นเมื่อ timeout ว่าจะ approve หรือ reject
    • assigned_users - รายชื่อผู้ใช้ที่จะส่งข้อความถึง
Apache Airflow เบื้องต้นด้วย Python

ตัวอย่าง ApprovalOperator

approve_gate = ApprovalOperator(
        task_id="approve_data_import",
        subject="Data import - Approval Required",
        body=(
            "Please review the data produced by the *extract_info* task."
            "Approve to write data to the database, or Reject to halt the run."
        ),
    )
Apache Airflow เบื้องต้นด้วย Python

ApprovalOperator ใน Airflow UI

ในมุมมอง DAG run จะปรากฏ RequiredActions ขึ้นมาหาก task ที่ต้องการอนุมัติกำลังรออยู่

มุมมอง DAG run ของ Airflow แสดง task ที่มีสถานะ Approval required

Apache Airflow เบื้องต้นด้วย Python

หน้าหลักของ ApprovalOperator

หน้าหลักของ Airflow แสดงส่วน Required Actions

Apache Airflow เบื้องต้นด้วย Python

ข้อความ ApprovalOperator ใน Airflow UI

UI ของ Airflow แสดงข้อความอนุมัติพร้อมตัวเลือก Approve และ Reject

Apache Airflow เบื้องต้นด้วย Python

มาฝึกกันเถอะ!

Apache Airflow เบื้องต้นด้วย Python

Preparing Video For Download...