30 พ.ย. 2022 เวลา 02:00 • วิทยาศาสตร์ & เทคโนโลยี
ก่อนหน้านี้เราเคยคุยกันถึงเรื่องการตั้งเวลา un Python Script กับ Cron บน Linux ไปแล้ว วันนี้ได้เวลาของ Windows กันบ้าง
การตั้งเวลา run Python Script บน Windows นั้นสามารถทำได้ผ่านโปรแกรมที่ชื่อว่า Task Scheduler ซึ่งเป็นโปรแกรมที่มาพร้อมกับ Windows อยู่แล้ว ทำให้คนที่ต้องตั้งคำสั่ง run Python Script ซ้ำ ๆ สามารถทำงานได้สะดวกและมีประสิทธิภาพมากขึ้น
ในบทความนี้ Big Data Thailand จะพาทุกคนไปทดลองการใช้งานโปรแกรมนี้ตั้งแต่การเริ่มจัดเตรียม Python Script ไปจนถึงการตั้งเวลาการทำงานผ่านโปรแกรม Task Scheduler
ในบทความก่อนหน้านี้ เราได้ลองตั้งเวลาทำงานของ Python Script บน Linux ด้วยเครื่องมือที่ชื่อว่า CRON สำหรับเพื่อน ๆ ที่สนใจสามารถติดตามอ่านได้ที่ https://bigdata.go.th/big-data-101/scheduling-cron/
เพื่อน ๆ บางคนอาจสงสัยว่า แล้วหาก ระบบปฏิบัติการ (Operating System: OS) ที่ใช้อยู่เป็น Windows ล่ะ จะสามารถตั้งเวลาบ้างได้ไหมและทำได้อย่างไร ในบทความนี้ เราจะมาลองตั้งเวลาการทำงานของ Python Script บน Windows กันค่ะ
Task Scheduler
โปรแกรมที่เราจะใช้ในการตั้งเวลาการทำงานของ Python Script ภายใน Windows นั้น มีชื่อว่า Task Scheduler ซึ่งเป็นโปรแกรมที่มาพร้อมกับ Windows อยู่แล้วและสามารถใช้สำหรับตั้งเวลาการทำงานต่าง ๆ คล้ายคลึงกับ Cron ใน Linux
เราสามารถเข้าถึงโปรแกรม Task Scheduler ได้ผ่านทาง Start Menu โดยการกดปุ่ม Windows แล้วพิมพ์คำว่า “Task Scheduler” จากนั้นคลิกเพื่อเลือกเปิดโปรแกรมดังกล่าว
โปรแกรม Task Scheduler
เมื่อเข้ามาภายในตัวโปรแกรม หากไปที่ Task Scheduler Library จะพบกับงานต่าง ๆ ที่ถูกกำหนดเวลาการทำงานไว้ พร้อมทั้งสถานะ เวลาการทำงานครั้งล่าสุด และเวลาการทำงานครั้งถัดไป ดังเช่นตัวอย่างในรูปด้านล่าง
ในเนื้อหาส่วนถัดไป เราจะทำการจัดเตรียม Python Script และมาทดลองตั้งเวลาผ่านโปรแกรม Task Scheduler นี้กันดูค่ะ
LAB Outline
  • 1.
    จัดเตรียม Python Script
  • 2.
    จัดเตรียม Batch file สำหรับสั่ง run Python Script ดังกล่าว
  • 3.
    ตั้งเวลาการทำงานผ่านโปรแกรม Task Scheduler
**หมายเหตุ ในการทำการทดลองนี้ ต้องมีการติดตั้ง Python เรียบร้อยแล้วภายในเครื่อง
1. จัดเตรียม Python Script
ในการจัดเตรียม python script ให้เพื่อน ๆ ทำการสร้างโฟล์เดอร์สำหรับการทดลองนี้ที่ D:\task_scheduler จากนั้นสร้างไฟล์ Python Script ที่ชื่อว่า hello_script.py และทำการคัดลอกตัวอย่างโค้ดด้านล่าง
hello_script.py
สำหรับ python script ตัวอย่างนี้ เมื่อถูกสั่งรันจะทำการเขียนข้อความว่า
Hello Task Scheduler
Job Done @YYYY_MM_DD_hh:mm:ss
ลงไปในไฟล์ที่ชื่อว่า Hello_YYYY_MM_DD_hhmmss.log ภายในโฟลเดอร์ D:\task_scheduler โดยที่ YYYYMMDDhhmmss แทน ปีเดือนวันชั่วโมงนาทีและวินาทีที่คำสั่งทำงาน
เพื่อน ๆ สามารถทดลองสั่งรัน python script นี้ผ่าน terminal (เช่น Command Prompt หรือ PowerShell) ได้โดยใช้คำสั่ง python hello_script.py ซึ่งเมื่อทำงานสำเร็จจะพบไฟล์ Log และเมื่อเปิดดูจะพบเนื้อหาดังเช่นตัวอย่างในรูปด้านล่าง
ตัวอย่างผลการทำงานของ python script
2. จัดเตรียม Batch file สำหรับสั่ง run Python Script ดังกล่าว
ในขั้นตอนนี้เราจะสร้าง batch file สำหรับสั่งการทำงาน Python Script ที่ได้จัดเตรียมในขั้นตอนที่ผ่านมา โดยภายในต้องระบุ Path ไปยัง python.exe และ Path ไปยัง Python Script file
2.1 Path ไปยัง python.exe
โดยปกติแล้ว python.exe จะอยู่ใน location ดังเช่นในรูปด้านล่าง หรือสามารถทำการค้นหาโดยพิมพ์คำสั่ง where python ภายใน Command Prompt
ตัวอย่างการหา Path ของ Python.exe โดยใช้คำสั่ง where
2.2 Path ไปยัง Python Script
เราสามารถดู location ไปยังโฟล์เดอร์ที่จัดเก็บ Python Script ได้จาก Address Bar ของ File Explorer ดังเช่นในรูปด้านล่าง เพื่อนำมาประกอบกับชื่อไฟล์เป็น Path ไปยัง Python Script เช่นกรณีนี้จะเป็น “D:\task_scheduler\hello_script.py”
ตัวอย่างการหา Path ของ File ผ่าน address bar ของ File Explorer
2.3 สร้าง batch file ชื่อ run_hello_script.bat
เมื่อเรารู้ path ของทั้งสองอย่างแล้ว เราสามารถทำการสร้าง batch file[2] ได้ โดยใช้โปรแกรม text editor ทั่วไป อาทิ notepad โดยตั้งชื่อไฟล์ที่มีนามสกุล .bat และระบุเนื้อหาเป็น “” “” ดังเช่นตัวอย่างด้านล่าง
หากทดลองดับเบิ้ลคลิก run_hello_script.bat เพื่อสั่งการ python script จะเห็นว่ามี log file ใหม่เพิ่มขึ้นมา
ตัวอย่าง batch file และ log file ที่ได้จากการดับเบิ้ลคลิกสั่งการ ณ เวลา 14.24
3. ตั้งเวลาการทำงานผ่านโปรแกรม Task Scheduler
ในขั้นตอนนี้ เราจะทำการตั้งเวลาการทำงานของ Batch File ที่ได้มาจากขั้นตอนที่แล้ว ผ่านโปรแกรม Task Scheduler กันค่ะ
3.1 วิธีการสร้าง Basic Task เพื่อสั่งการทำงาน Batch Script ตามรอบเวลาที่กำหนด
1) เปิดโปรแกรม Task Scheduler และคลิกเลือกเมนู Create Basic Task…
2) ทำการระบุชื่องาน (Name) และรายละเอียดของงาน (Description) ที่จะสร้าง
3) เลือกระบุรอบการทำงาน เช่น ทุกวัน (Daily) ทุกสัปดาห์ (Weekly) ทุกเดือน (Monthly) หรือเพียงครั้งเดียว (One time)
ทั้งนี้หากต้องการระบุรอบการทำงานรูปแบบอื่นที่ไม่ได้มีในตัวเลือก เช่น ทุก 10 นาที หรือ ทุกชั่วโมง เราจะสามารถตั้งค่าเพิ่มเติมได้ภายหลังค่ะ ให้ทำการเลือกตัวเลือกใด ๆ ไปก่อนได้
4) ทำการระบุวันที่และเวลา ที่ต้องการให้ Script เริ่มทำงาน
เช่น ในตัวอย่างเป็นการระบุให้ script เริ่มทำงาน วันที่ 27 เดือนมิถุนายน 2022 เวลา บ่าย 3 โมง 25 นาที 21 วินาที
5) จากนั้นระบุประเภทของงาน ซึ่งในที่นี้เราต้องการสั่งเริ่มการทำงานของ Batch Script จึงเลือก Start a program
6) และทำการ Browse… เพื่อเลือก Batch File Script ที่เราได้สร้างก่อนหน้านี้
7) ตรวจสอบความเรียบร้อยของ Task ที่เราจะสร้าง จากนั้นกดปุ่ม Finish
8) จะเห็นว่ามีงานที่เราได้สร้างเมื่อสักครู่ภายใน Task Scheduler Library เป็นที่เรียบร้อย
3.2 วิธีการทดสอบสั่ง Run Task manually
เมื่อเราทำการสร้าง Task ของเราเป็นที่เรียบร้อยแล้ว เราอาจอยากทดสอบว่า Task ที่สร้างขึ้นนี้จะสามารถทำงานได้จริงเมื่อถึงเวลาที่กำหนด เราสามารถสั่งการทำงานของ Task นอกเหนือจากเวลาที่ตั้งไว้ได้โดยเลือก Task ที่ต้องการและกดปุ่ม Run
รูปด้านล่างแสดงตัวอย่างของ Log file ที่เกิดขึ้นจากการสั่ง Run Task manually ณ เวลา 15:16 ซึ่งช่วยทำให้มั่นใจว่าเมื่อถึงเวลาการทำงานที่เรากำหนดไว้ Task ของเราจะสามารถทำงานได้อย่างถูกต้อง
Log file ที่เกิดขึ้นจากการ Run Task manually ณ เวลา 15:16
3.3 วิธีการระบุรอบเวลาการทำงานรูปแบบอื่น ๆ
หากยังจำกันได้ ในขั้นตอนการสร้างงานแบบ Create Basic Task นั้น เราจะสามารถกำหนดรอบการทำงานในรูปแบบที่จำกัด เช่น รายวัน รายสัปดาห์ หรือรายเดือน เป็นต้น แต่เราสามารถกำหนดรูปแบบรอบการทำงานที่แตกต่างไป ได้โดย . . .
1) เลือก Task ที่ต้องการ คลิกขวา และเลือก Properties
2) ไปยังแถบเมนู Triggers และกดปุ่ม Edit…
3) ภายในหน้าจอ Edit Trigger เราสามารถตั้งค่ารูปแบบรอบการทำงานอื่น ๆ ได้ที่ Advanced settings จากนั้นกดปุ่ม OK
เช่น ในตัวอย่างด้านล่างเป็นการกำหนดรูปแบบการทำงาน ให้เริ่มต้นวันที่ 27 มิถุนายน 2022 เวลา 3:25:00 โดยจะสั่งการทำงานทุก ๆ 5 นาที เป็นเวลา 1 ชั่วโมง
4) เมื่อกลับมายังหน้า Task Scheduler Library จะเห็นว่ารอบการทำงานของ Task เราได้เปลี่ยนไปตามรูปแบบใหม่ที่เราเพิ่งกำหนด
5) หลังจากปล่อยเวลาให้ผ่านรอบการทำงานไปและกลับมาดูที่โฟลเดอร์ D:\task_scheduler จะเห็นว่า Task ของเราได้ทำงานและสร้าง log file ตามที่เราได้วางแผนไว้
ตัวอย่าง log file ที่ได้จากการกำหนดรอบการทำงานทุก 5 นาที
บทสรุป
ในบทความนี้ เราได้ทดลองตั้งเวลาการทำงานของ Python Script บน Windows ผ่านการสร้าง Batch Script และกำหนดเวลาการทำงานผ่านโปรแกรม Task Scheduler หวังว่าบทความนี้จะเป็นประโยชน์ต่อเพื่อน ๆ ในการช่วยเพิ่มไอเดียการทำงานหรือทำให้วันเวลาที่ต้องสั่งรัน Python Script ซ้ำ ๆ สะดวกมากขึ้นนะคะ
นอกจากการสั่งการทำงานของ Python Script แล้ว เพื่อน ๆ ที่สนใจสามารถต่อยอดศึกษาการเขียน Batch Script เพื่อสั่งการทำงานอื่น ๆ เช่น โปรแกรมภาษาอื่น ๆ หรือการจัดการไฟล์ออกจากโฟล์เดอร์ต่าง ๆ โดยอัตโนมัติได้อีกด้วยค่ะ
เนื้อหาโดย ณัฐพัชร์ เศรษฐเสถียร
ตรวจทานและปรับปรุงโดย นนทวิทย์ ชีวเรืองโรจน์
โฆษณา