การใช้ Supervisor ดูแล python script บน R-Pi

หลังจากบทความก่อนๆ เราได้เรียนรู้และทดลองเขียน script ให้กับ raspberry Pi ตัวโปรดของเราทดลองรันกันมาหลายโปรแกรมแล้วนะครับ วันนี้เรามาดูวิธีการดูแลและจัดการ python script ที่เราได้สร้างขึ้นมา เพื่อให้มีการทำงานอัตโนมัติ ซึ่งจะมีประโยชน์หลายอย่าง เช่น เราสามารถเซตให้ python script ของเรารันอัตโนมัติ ตั้งแต่เราบูตเครื่อง  และหากเรารัน python script ของเราไปนานๆ เกิด error และปิดตัวเอง เราก็อาจจะเซตให้ Supervisor ช่วย restart python script ของเราให้ทำงานใหม่ได้ เป็นต้นครับ ซึ่งการใช้งานและ config ก็ไม่ได้ยุ่งยาก พร้อมแล้วเรามาเริ่มกันดีกว่า

wxsupv-000

Supervisor คืออะไร?

มาทำความรู้จักกับ Supervisor กันก่อนครับ ซึ่งมันก็คือ Process Control System เช่นเดียวกันกับโปรแกรมหลายๆตัว เช่น launchd, daemontools, and runit (ซึ่งที่กล่าวๆ มาผมก็ไม่เคยลองเล่นนะ 55+) ประโยชน์ของ Supervisor ก็คือ ช่วยจัดการและดูแลการทำงาน Process ของเราบนระบบปฏิบัติการ Linux ซึ่งในที่นี้เราเอามาประยุกต์ใช้กับ Raspberry Pi ของเรา เพื่อให้มันมันดูแลจัดการกับ Python Script ของเรา เพื่อให้แน่ใจว่า Script ของเราสามารถทำงานได้ตลอดเวลา ตั้งแต่เปิดเครื่อง หรือแม้แต่กระทั้งหาก Script ของเรามีการทำงานผิดพลาดและปิดตัวลง Supervisor ก็ยังจะช่วย Restart Python Script ของเราให้กลับมาทำงานใหม่ด้วยครับ เจ๋งมั๊ยละ !!!

การติดตั้ง Supervisor 

การติดตั้งก็ไม่ยุ่งยากอะไรครับ ใช้คำสั่งต่อไปนี้ได้เลย

sudo apt-get install supervisor

เสร็จเรียบร้อยแล้วครับ อ้าวว !! ทำไม มันง่ายขนาดนั้น ก็มันง่ายจริงๆ ครับ ต่อไปเรามาดูวิธีการ config

การปรับแต่ง Supervisor

การสร้างไฟล์ config ให้เราทำการสร้างไฟล์ .conf ไปไว้ที่ /etc/supervisor/conf.d/ โดยใช้คำสั่งต่อไปนี้

sudo nano /etc/supervisor/conf.d/test_supv.conf

หลังจากนั้น เราก็ใส่ค่า config เข้าไปครับ ตัวอย่างที่ผมทำดังต่อไปนี้

[program:wx]
command=python /home/pi/python/wx/wx.py
stdout_logfile=/home/pi/python/wx/wx_log.txt
redirect_stderr=true
autorestart=true
autostart=true

มาลองดู script ที่เราสร้างผ่านหน้าต่าง command กันครับ

wxsupv-001

 

อธิบายดังต่อไปนี้ครับ

[program:wx] คือ ชื่อ config ที่เราตั้งขึ้น

command คือ คำสั่งที่รัน process ในที่นี้เราสั่งให้รันไฟล์ python ของเรา

stdout_logfile คือ การ print พวกค่า output หรือ ค่า error ต่างๆ ไปเก็บไว้ใน logfile ที่กำหนด

autorestart คือ การตั้งค่าให้มีการ restart หาก python script ของเราหยุดทำงาน

autostart คือ สั่งให้ python script ของเราทำงานตั้งแต่เริ่มต้นเปิดเครื่อง

 

เสร็จแล้ว หลังจากนั้นก็ลอง restart Raspberry pi เราสักรอบนึง ทีนี้ก็มั้นใจได้ว่า python script ของเราจะรันอยู่ตลอดเวลา ไม่หายไปแน่นอนครับ ^^

คร่าวๆ ก็เป็นดังที่กล่าวมาครับ สำหรับ command เพิ่มเติมสามารถเข้าไปดูได้ตาม link ต่อไปนี้

http://supervisord.org/configuration.html#program-x-section-settings

แล้วพบกับบทความสนุกๆ ใหม่ในตอนหน้าครับ สวัสดีครับ …

Leave a Comment