Crescendo Lab เอกสาร
ไทย
สมัครใช้งาน

งานตามกำหนดเวลา

งานตามกำหนดเวลาจะเรียก HTTP หนึ่งครั้งไปยังแอปหนึ่งขององค์กรคุณตามเวลาที่กำหนด คล้าย Google Cloud Scheduler

อัปเดตล่าสุด
ดู Markdown เปิดใน Claude เปิดใน ChatGPT

องค์ประกอบของงาน#

การเรียกจะไปถึงเวอร์ชันที่เผยแพร่อยู่ในขณะนั้น

ฟิลด์คำอธิบาย
แอปแอปคอนเทนเนอร์ที่จะเรียก
พาธต่อท้ายที่อยู่ของแอป ขึ้นต้นด้วย / ใส่ query string ได้ เช่น /tasks/daily
เมธอดGET, POST, PUT, PATCH หรือ DELETE ค่าเริ่มต้นคือ POST จะส่งเนื้อหาเฉพาะกับ POST, PUT และ PATCH
กำหนดเวลานิพจน์ cron 5 ฟิลด์: นาที ชั่วโมง วันที่ เดือน วันในสัปดาห์ ถี่สุดนาทีละครั้ง
เขตเวลาค่าเริ่มต้นคือ Asia/Taipei

ตัวอย่างนิพจน์ cron

นิพจน์เวลาที่รัน
0 9 * * *ทุกวัน เวลา 09:00
*/15 * * * *ทุก 15 นาที
0 8 * * 1ทุกวันจันทร์ เวลา 08:00
0 0 1 * *วันที่ 1 ของทุกเดือน เวลา 00:00

สร้างงาน#

  1. เพิ่มเอนด์พอยต์ในแอป เช่น POST /tasks/daily สำหรับงานที่ทำซ้ำ แล้วดีพลอยและเผยแพร่
  2. สร้างงาน เปิด ดีพลอย › งานตามกำหนดเวลา เลือกแอป แล้วใส่พาธและกำหนดเวลา
  3. รันเองหนึ่งครั้ง ใช้ รันทันที แล้วตรวจรหัสการตอบกลับและบันทึกในประวัติการรัน

ตรวจว่าการเรียกมาจากกำหนดเวลา#

โดยค่าเริ่มต้น การเรียกไม่มีหลักฐานว่ามาจากที่ใด เลือกวิธีใดวิธีหนึ่ง

  • ตั้งส่วนหัวของคุณเองในงาน เช่น X-Cron-Secret เก็บค่าเป็นความลับของแอป แล้วเปรียบเทียบในโค้ด
  • เปิดโทเค็นที่ลงนาม การเรียกจะมี Authorization: Bearer <JWT> ให้ตรวจสอบกับ https://api.agentlab.cresclab.com/.well-known/jwks.json โดย aud คือ franky:app:<ID แอป>

พฤติกรรมของการรัน#

รายการพฤติกรรม
การซ้อนกันไม่ซ้อนกัน รอบที่ถึงเวลาขณะรอบก่อนยังทำงานอยู่จะถูกข้าม
การส่งอย่างน้อยหนึ่งครั้ง จึงอาจได้รับซ้ำ ให้กรองรายการซ้ำด้วยส่วนหัว X-Franky-Run-Id
การลองใหม่ค่าเริ่มต้น 0 ครั้ง สูงสุด 5 ครั้ง
เวลาสูงสุด15 วินาทีถึง 30 นาที ค่าเริ่มต้น 3 นาที
server.js
const runId = req.headers["x-franky-run-id"];
if (await alreadyHandled(runId)) {
  res.writeHead(200).end();
  return;
}