ข้ามไปยังเนื้อหา
เอราวัณACADEMYEN

ดูแลแอป

งานที่รันเองตามเวลา และดูได้ว่ารันแล้วเป็นยังไง

ล้างข้อมูลเก่าทุกคืน ส่งรายงานทุกเช้าวันจันทร์ เตือนลูกค้าตอนสองทุ่ม งานแบบนี้ตั้งไว้ครั้งเดียวก็รันเองไปเรื่อย ๆ ใช้โค้ดและการตั้งค่าชุดเดียวกับแอปของคุณ ไม่⁠ต้องเปิดเครื่องทิ้งไว้

ติดอยู่ตรงไหน ทีม Erawan ช่วยดูให้ฟรีสำหรับแผน Hobby ขึ้นไป

บอกเอไอว่าจะให้รันอะไร ตอนไหน

บอกเป็นภาษาธรรมดาได้เลย เอไอจะแปลงเป็นตารางเวลาแบบ cron ให้เอง

ตั้งงานให้ my-app รัน python cleanup.py ทุกวันตอนตีสาม เวลาไทย

ถ้าตั้งเองในเทอร์มินัล ใส่ชื่องาน ตารางเวลา แล้วตามด้วยคำสั่งที่จะรัน

erawan task add my-app nightly "0 20 * * *" python cleanup.py

ห้าช่องของ cron คือ นาที ชั่วโมง วันที่ เดือน และวันในสัปดาห์ บรรทัดข้างบนจึงแปลว่ารันตอน 20:00 ตามเวลา UTC ของทุกวัน ซึ่งก็คือตีสามของวันถัดไปตามเวลาไทย

เวลาในระบบเป็น UTC

ไม่ใช่เวลาไทย และข้อนี้คนพลาดกันบ่อยที่สุด เวลาไทยเร็วกว่า UTC เจ็ดชั่วโมง ถ้าอยากให้รันตีสามเวลาไทย ก็ต้องตั้งเป็นสองทุ่มของคืนก่อนตามเวลา UTC อย่างบรรทัดข้างบน ถ้าเผลอเขียน 0 3 * * * งานก็ไม่ได้พังให้เห็น ยังรันทุกวันตามปกติ แค่ไปรันตอนสิบโมงเช้าเวลาไทยแทน เวลาสั่งเอไอ ต่อท้ายว่าเวลาไทยทุกครั้ง เอไอจะแปลงให้เอง

งานรันด้วยอะไร

งานตั้งเวลาใช้โค้ดชุดเดียวกับแอป และได้การตั้งค่าเดียวกันทั้งหมด ทั้งการต่อฐานข้อมูลและคีย์ต่าง ๆ ไม่ต้องตั้งอะไรแยก พอเอาเวอร์ชันใหม่ขึ้นไป ทุกงานก็ย้ายไปใช้โค้ดใหม่ตามไปด้วย

มีข้อจำกัดอยู่สามข้อ

  • รอบละไม่เกิน 10 นาที หน่วยความจำรอบละ 256MB งานที่เกินเวลาจะโดนหยุด รอบที่พังก็ไม่ลองใหม่ให้ รอรอบถัดไปตามเวลาเดิม ถ้างานหนักกว่านี้ ให้เอไอแบ่งเป็นชิ้นเล็กลง
  • ดิสก์ของแอปอ่านได้อย่างเดียว ถ้างานต้องเขียนหรือลบไฟล์บนดิสก์ เช่น ล้างไฟล์ cache ให้บอกเอไอว่างานนี้ต้องเขียนดิสก์ด้วย (ในคำสั่งคือ --write)
  • ใช้ได้กับแอปที่มีโปรแกรมรันอยู่ เว็บไซต์ที่เป็นไฟล์ล้วน ๆ ตั้งงานไม่ได้

ลองรันดูก่อน

ก่อนตั้งเวลา ให้เอไอลองรันคำสั่งนั้นดูหนึ่งรอบตอนนี้เลย ใช้โค้ดและการตั้งค่าชุดเดียวกับงานจริง จะได้รู้ตอนนี้ว่าคำสั่งผิดหรือเปล่า ไม่ต้องรอไปรู้พรุ่งนี้เช้า

erawan run my-app python cleanup.py

ดูว่ารอบล่าสุดเป็นยังไง

erawan task ls my-app
erawan task logs my-app nightly

คำสั่งแรกแสดงงานทั้งหมดของแอปกับเวลาที่รันครั้งล่าสุด คำสั่งที่สองแสดงสิ่งที่รอบล่าสุดพิมพ์ออกมา หรือจะถามเอไอว่า “งาน nightly รอบล่าสุดเป็นยังไง” ก็ได้ ควรเปิดดูสักครั้งหลังรอบแรกผ่านไป เพราะงานที่พังเงียบ ๆ ตอนตีสาม ดูจากข้างนอกก็ไม่ต่างจากงานที่ไม่เคยตั้งไว้เลย

เปลี่ยนเวลาหรือลบงาน

อยากเปลี่ยนเวลาก็ตั้งใหม่ด้วยชื่องานเดิม ตัวใหม่จะแทนที่ตัวเก่า ถ้าไม่ใช้แล้วก็ลบทิ้ง

erawan task rm my-app nightly

ถ้าลบแอป งานทั้งหมดของแอปนั้นก็หายไปด้วย ไม่มีตารางเวลาไหนค้างไว้รันใส่แอปที่ไม่อยู่แล้ว

ถ้าอยากให้งานส่งรายงานเข้าอีเมลด้วย อ่านวิธีส่งอีเมลจากแอปต่อได้เลย

บทเรียนเอราวัณคลาวด์ทั้งหมด