การเขียนด้วย Jinja
เมื่อเริ่มใช้งาน Airflow มากขึ้น คุณได้เพิ่ม callback การแจ้งเตือนต่าง ๆ เข้าไป แต่พบว่าได้รับข้อความที่มีเนื้อหาซ้ำกันในกล่องจดหมายทุกครั้ง ทำให้หาข้อความยากเพราะหัวเรื่องเหมือนกันเสมอ หลังจากได้อ่านเกี่ยวกับการรองรับ Jinja ของ Airflow คุณพบว่าสามารถเพิ่มข้อมูลระบุตัวตนให้ Dag ส่งรายงานพร้อมระบุวันที่ของแต่ละการรันได้แล้ว จึงตัดสินใจเริ่มจากการอัปเดต Dag sales_update ให้ส่งอีเมลพร้อมหัวเรื่องแบบ template เมื่อทำงานสำเร็จ
import ที่จำเป็นทั้งหมดของ Airflow พร้อมใช้งานแล้ว และ task pull_sales_data กับ generate_sales_report ได้รับการกำหนดค่าไว้แล้วเช่นกัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Apache Airflow เบื้องต้นด้วย Python
คำแนะนำการฝึกหัด
กำหนดให้ Dag ส่งอีเมลเมื่อทำงานเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด
กำหนด attribute
subjectสำหรับอีเมลแจ้งเตือนใช้ Jinja template เพื่อแสดงวันที่รันในหัวเรื่อง:
Sales update successfully processed for YYYY-MM-DD
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Add a notification when successful, including date in the subject
@dag(start_date=datetime(2026,4,30),
____=SmtpNotifier(
from_email="[email protected]",
to="[email protected]",
____="Sales update successfully processed for {{ ____ }}"
))
def sales_update():
pull_sales_data() >> generate_sales_report()
sales_update()