Apache Airflow 3.4.0 ออก 6 พ.ย. 2026 เพิ่ม Task Loops และ Dag ภาษา Go Java TypeScript YAML ใช้ psycopg3 เป็นค่าเริ่มต้น เลิกรองรับ Python 3.10 ย้อนรุ่นช้า
โดย กองบรรณาธิการ THAI DATA อ่าน 4 นาที
สรุปประเด็นสำคัญ
- 6 พฤศจิกายน 2026 โครงการ Apache Airflow ปล่อยรุ่น 3.4.0 บน GitHub พร้อมหมายเหตุการเปลี่ยนแปลงสำคัญกว่า 30 หัวข้อ
- Task Loops (AIP-111) ให้กลุ่มงาน (task group) ทำซ้ำตามจำนวนที่กำหนดตอนรัน ด้วย
.loop()เป็นแบบ do-while ที่รันอย่างน้อย 1 รอบ และหยุดตามเงื่อนไขuntilโดยมีmax_iterationsกำกับ - Dag Importer (AIP-85) ให้เขียน Dag ทั้งชุดด้วยภาษาอื่นนอกจาก Python ได้ ได้แก่ SDK ของ TypeScript, Go, Java และรูปแบบ YAML แต่ตัวเฟรมเวิร์กและ SDK ยังเป็นฟีเจอร์ทดลองใน 3.4
- ข้อควรระวังตอนอัปเกรด: psycopg3 เป็นไดรเวอร์ Postgres เริ่มต้นแทน psycopg2 และ asyncpg, เลิกรองรับ Python 3.10, Dag ที่ถูกกระตุ้นด้วย asset สร้าง 1 run ต่อ 1 event เป็นค่าเริ่มต้น และการย้อนกลับไปรุ่นก่อน 3.4.0 อาจช้ามากเพราะย้าย XCom กลับตารางเดิม
Apache Airflow 3.4.0 ถูกปล่อยเมื่อ 6 พฤศจิกายน 2026 พร้อมความสามารถหลัก 2 อย่างคือ Task Loops ที่ให้กลุ่มงานทำซ้ำตามเงื่อนไขที่กำหนดตอนรัน และ Dag Importer ที่ให้เขียน Dag ด้วย TypeScript, Go, Java หรือ YAML ได้ รุ่นนี้ยังเปลี่ยนไดรเวอร์ Postgres เริ่มต้นเป็น psycopg3 และเลิกรองรับ Python 3.10
Airflow เป็นเครื่องมือจัดตารางและควบคุมไปป์ไลน์ข้อมูลของ Apache Software Foundation หมายเหตุรุ่นของ Apache Airflow 3.4.0 บน GitHub แจ้งการเปลี่ยนแปลงสำคัญกว่า 30 หัวข้อ ทีมดูแลควรอ่านก่อนอัปเกรด

Apache Airflow 3.4.0 เพิ่ม Task Loops
Task Loops ตาม AIP-111 ให้กลุ่มงานที่ตกแต่งไว้ทำซ้ำตามจำนวนที่ตัดสินตอนรันด้วย .loop() แบบมีเงื่อนไขทำงานเหมือน do-while คือรันอย่างน้อย 1 รอบแล้วเงื่อนไข until ตัดสินว่าจะหยุดเมื่อไร โดยมี max_iterations เป็นเพดาน แต่ละรอบใช้ผลของรอบก่อนหน้าได้ และรอบต่าง ๆ ทำงานต่อกันทีละรอบ แม้งานภายในรอบเดียวกันยังรันขนานกันได้ ความพยายามที่ retry ถูกเก็บแยกด้วย UUID ต่อครั้ง ผู้ใช้จึงล้างเฉพาะบางรอบได้
ตัวอย่างงานที่ได้ประโยชน์คือการวนเรียกระบบภายนอกจนกว่าผลจะพร้อม หรือการประมวลผลทีละชุดจนข้อมูลหมด ซึ่งก่อนหน้านี้ต้องเขียนโครงสร้างเอง หมายเหตุรุ่นชี้ว่า custom XCom backend ที่ override serialize_value ต้องมี store_value ด้วยจึงจะรองรับ task loops
Apache Airflow 3.4.0 ให้เขียน Dag ด้วยภาษาอื่นนอกจาก Python
AIP-85 เพิ่ม Dag Importer แบบเสียบเพิ่มได้ใน Task SDK ให้ Dag processor รู้จักรูปแบบต้นฉบับที่ไม่ใช่ .py แต่ละรูปแบบลงทะเบียนตัว import และ processor เรียกรันไทม์ของภาษานั้น Dag ที่ได้แสดงใน Airflow เหมือน Dag ของ Python
| รูปแบบ | สถานะใน 3.4 |
|---|---|
| TypeScript SDK | ทดลอง API อาจเปลี่ยน |
| Go SDK | ทดลอง API อาจเปลี่ยน |
| Java SDK | ทดลอง API อาจเปลี่ยน |
| YAML (ไฟล์ .yaml มี $schema) | สร้าง operator จริง ใช้ templating แบบระบุชัด |
หมายเหตุรุ่นระบุว่าเฟรมเวิร์ก Dag Importer และ SDK ภาษาต่าง ๆ เป็นฟีเจอร์ทดลองใน 3.4 และ API อาจเปลี่ยนได้

ค่าเริ่มต้นและข้อจำกัดที่เปลี่ยนใน Apache Airflow 3.4.0
| การเปลี่ยนแปลง | ผลต่อผู้ใช้ |
|---|---|
| psycopg3 เป็นไดรเวอร์ Postgres เริ่มต้น | URL แบบ postgresql:// ถูกเขียนใหม่เป็น postgresql+psycopg:// ปิด server-side prepared statement เพื่อใช้กับ PgBouncer แบบ transaction-mode ได้ ถ้าต้องการ psycopg2 หรือ asyncpg ติดตั้ง extra และตั้งค่าเอง |
| asset-triggered Dag | ตารางเวลา asset เดี่ยวและ OR สร้าง 1 run ต่อ 1 event ใช้ batch_asset_events เพื่อรวมแบบเดิม |
| เลิกรองรับ Python 3.10 | ต้องใช้ Python รุ่นที่สูงกว่า |
| image ของ CI และ production | ใช้ Docker Hardened Images และ Debian 13 |
| callback | ต้องแลกโทเค็นใช้ครั้งเดียวก่อนรัน |
| executor | รวมสถานะ workload ไว้ใน BaseExecutor.executor_queues ของเดิมยังใช้ได้แต่แจ้งเตือนจนถึง Airflow 4.0 |
Apache Airflow 3.4.0 เพิ่มการย้ายข้อมูลที่เก็บ XCom แถวใหม่ในตาราง xcom_v2 ดังนั้นการย้อนไปรุ่นก่อน 3.4.0 อาจช้ามากตามจำนวนแถว XCom ที่เขียนหลังอัปเกรด ผู้พัฒนาทดสอบการอัปเกรดบนตาราง 300 ล้านแถวและยืนยันว่าไม่แตะข้อมูล XCom จึงเร็ว ส่วนบน MySQL ซึ่งย้อน DDL ไม่ได้ หากย้อนล้มเหลวหลังตรวจสอบแล้วสคีมาจะถูกย้อนครึ่งทาง ผู้ดูแลจึงควรสำรองข้อมูลก่อนย้อนรุ่น
สิ่งที่องค์กรไทยควรทำกับ Apache Airflow 3.4.0
- ทดสอบอัปเกรดในระบบทดสอบก่อน พร้อมสำรองฐานข้อมูล metadata และวางแผนว่าถ้าย้อนกลับจะทำอย่างไร เพราะการย้อนไม่ใช่การกดปุ่มธรรมดา
- ตรวจไดรเวอร์และ PgBouncer หากใช้ Postgres ตรวจว่าการเปลี่ยนเป็น psycopg3 ไม่ชนกับการตั้งค่าเดิม
- ตรวจตารางเวลาที่ใช้ asset เพราะ 1 run ต่อ 1 event อาจเพิ่มจำนวน run ในไปป์ไลน์ที่เคยรวม event
- เตรียมอัปเกรด Python ที่ยังใช้ 3.10 ก่อนย้ายมา 3.4
- ทดลองภาษาอื่นกับงานที่ไม่สำคัญก่อน เพราะ SDK ของ TypeScript, Go และ Java ยังเป็นฟีเจอร์ทดลอง
ทำไม Apache Airflow 3.4.0 สำคัญ
ไปป์ไลน์ข้อมูลที่ต้องวนจนกว่าเงื่อนไขจะครบ หรือที่ทีมวิศวกรเขียนด้วย Go และ Java อยู่แล้ว เคยต้องห่อด้วย Python เพื่อให้ Airflow รู้จัก Apache Airflow 3.4.0 ลดช่องว่างนี้ด้วย Task Loops และ Dag Importer แต่ฟีเจอร์ภาษาอื่นยังเป็นรุ่นทดลอง ทีมที่ใช้งานจริงจึงควรเริ่มจากงานที่ไม่กระทบธุรกิจ และอ่านหัวข้อ Significant Changes ทั้งหมดบน GitHub เพราะหลายรายการเปลี่ยนค่าเริ่มต้นของระบบ
บริการของ THAI DATA CLOUD ที่เกี่ยวข้อง
ทีมข้อมูลที่รัน Airflow เองต้องมีเซิร์ฟเวอร์ ฐานข้อมูล metadata และระบบสำรองที่ย้อนรุ่นได้เมื่อการอัปเกรดมีปัญหา Cloud Linux Server ของ THAI DATA CLOUD ให้เลือก Ubuntu, AlmaLinux หรือ Debian มี Root Access เต็มรูปแบบ และตั้งอยู่ใน Data Center ไทยและสิงคโปร์ (THAI DATA CLOUD เป็นผู้ดำเนินงานเว็บไซต์นี้)
ติดตามข่าวข้อมูลและฐานข้อมูลได้ที่หมวดข้อมูล
คำถามที่พบบ่อย
Apache Airflow 3.4.0 มีอะไรใหม่?
Apache Airflow 3.4.0 เพิ่ม Task Loops ให้ทำซ้ำกลุ่มงานตามเงื่อนไขตอนรัน และ Dag Importer ที่ให้เขียน Dag ด้วย TypeScript, Go, Java หรือ YAML นอกจากนี้เปลี่ยนไดรเวอร์ Postgres เริ่มต้นเป็น psycopg3 และเลิกรองรับ Python 3.10 ตามหมายเหตุรุ่นบน GitHub
Task Loops ใน Airflow 3.4 ทำงานอย่างไร?
Task Loops (AIP-111) ใช้ .loop() กับ task group ที่ตกแต่งไว้ ทำงานแบบ do-while คือรันอย่างน้อยหนึ่งรอบ แล้วเงื่อนไข until ตัดสินว่าจะหยุดเมื่อไร โดยมี max_iterations เป็นเพดาน แต่ละรอบใช้ผลของรอบก่อนได้ และรอบต่าง ๆ รันต่อกันทีละรอบ
อัปเกรด Airflow เป็น 3.4.0 แล้วย้อนกลับได้หรือไม่?
ย้อนกลับได้แต่อาจช้า เพราะ 3.4.0 เก็บ XCom ใหม่ในตาราง xcom_v2 และการย้อนต้องคัดลอกกลับ ผู้พัฒนาทดสอบการอัปเกรดบนตาราง XCom 300 ล้านแถวแล้วว่าเร็ว บน MySQL ควรสำรองข้อมูลก่อนย้อน เพราะ MySQL ย้อน DDL ไม่ได้
Airflow 3.4.0 เปลี่ยนค่าเริ่มต้นอะไรที่กระทบระบบเดิม?
ค่าเริ่มต้นที่เปลี่ยนคือไดรเวอร์ Postgres เป็น psycopg3 และ Dag ที่ใช้ตารางเวลาแบบ asset เดี่ยวหรือ OR สร้างหนึ่ง run ต่อหนึ่ง event แทนการรวมหลาย event เป็นรันเดียว ผู้ที่ต้องการแบบเดิมตั้ง batch_asset_events เป็น True
แหล่งอ้างอิง
- Apache Airflow 3.4.0 release notes (GitHub release) — Apache Airflow (Apache Software Foundation)
- Apache Airflow 3.4.0 documentation: release notes — Apache Airflow (Apache Software Foundation)
บุคคล องค์กร และสถานที่ในข่าวนี้
เลือกชื่อเพื่ออ่านข่าวทั้งหมดที่กล่าวถึง ตัวเลขคือจำนวนข่าว
- องค์กรและบริษัท
- GitHub101
- ประเทศและสถานที่
- สิงคโปร์238
พบข้อมูลคลาดเคลื่อน? แจ้งกองบรรณาธิการ
