Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

Rocketry :: จัดการ job scheduling แบบง่าย ๆ ด้วยภาษา Python

$
0
0

ปกติในการจัดการพวก job scheduling นั้น
มักจะใช้พวก crontab เป็นหลัก
หรืออาจจะไปใช้งานพวก AirFlow ไป ก็ช่วยได้เยอะ
แต่ลองไปค้นหาเพิ่มเติ่ม ก็เจอ Rocketry
ซึ่งพัฒนาด้วยภาษา Python
ที่สำคัญเขียน code ง่าย ๆ เพื่อจัดการ job scheduling
ดังนั้นมาลองใช้งานกันดูหน่อย

สิ่งแรกจากการใช้งานตัว Rocketry นั้น คือ

  • Code ที่อ่านง่าย
  • Code สั้น กระชับ

ตัวอย่าง code ง่าย ๆ เป็นดังนี้

[gist id="8f96c2ad33b43222e780bf1e15413059" file="1.py"]

สิ่งที่ชอบคือ การกำหนด schedule ของแต่ละ function ว่าทำงานตอนไหน
ที่อ่านเข้าใจได้ง่าย ยกตัวอย่างเช่น

  • every 10 seconds คือ ทำงานทุก ๆ 10 วินาที
  • daily after 10:00 คือ ทำงานทุกวันหลัง 10 โมงเช้า
  • (weekly on Monday | weekly on Saturday) & time of day after 10:00 ลองคิดดูว่า จะทำงานวันไหน เวลาอะไรบ้าง
  • after task 'do_first' คือ ให้ทำการหลังจาก task/function ชื่อว่า do_first ซึ่งใช้ในการกำหนด pipeline ของการทำงานได้แบบง่าย ๆ

รวมทั้งยังสามารถทำงานได้หลากหลายมากขึ้น
แต่ยังคงความง่ายของ code ที่เขียนออกมา ยกตัวอย่างเช่น

  • การทำงานแบบ concurrency
  • การทำงานแบบ pipeline
  • การจัดการ order ของการทำงานของ job ต่าง ๆ
  • สามารถเก็บ log ลอง data store ต่าง ๆ ได้ ทั้ง SQL และ NoSQL

ตัวอย่างของการทำงานแยกออกจาก thread/process หลัก

[gist id="8f96c2ad33b43222e780bf1e15413059" file="2.py"]

เป็น project ที่นำมาใช้แล้ว
ช่วยให้จัดการ job scheduling ได้สะดวกยิ่งขึ้น
น่าสนใจมาก ๆ
ลองทดลองใช้กันดูครับ

ขอให้สนุกกับการ coding ++


Viewing all articles
Browse latest Browse all 1997

Trending Articles