งานตามกำหนดเวลา
งานตามกำหนดเวลาจะเรียก HTTP หนึ่งครั้งไปยังแอปหนึ่งขององค์กรคุณตามเวลาที่กำหนด คล้าย Google Cloud Scheduler
องค์ประกอบของงาน#
การเรียกจะไปถึงเวอร์ชันที่เผยแพร่อยู่ในขณะนั้น
| ฟิลด์ | คำอธิบาย |
|---|---|
| แอป | แอปคอนเทนเนอร์ที่จะเรียก |
| พาธ | ต่อท้ายที่อยู่ของแอป ขึ้นต้นด้วย / ใส่ 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 |
สร้างงาน#
- เพิ่มเอนด์พอยต์ในแอป เช่น
POST /tasks/dailyสำหรับงานที่ทำซ้ำ แล้วดีพลอยและเผยแพร่ - สร้างงาน เปิด ดีพลอย › งานตามกำหนดเวลา เลือกแอป แล้วใส่พาธและกำหนดเวลา
- รันเองหนึ่งครั้ง ใช้ รันทันที แล้วตรวจรหัสการตอบกลับและบันทึกในประวัติการรัน
ตรวจว่าการเรียกมาจากกำหนดเวลา#
โดยค่าเริ่มต้น การเรียกไม่มีหลักฐานว่ามาจากที่ใด เลือกวิธีใดวิธีหนึ่ง
- ตั้งส่วนหัวของคุณเองในงาน เช่น
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 นาที |
const runId = req.headers["x-franky-run-id"];
if (await alreadyHandled(runId)) {
res.writeHead(200).end();
return;
}