7
วิธีการประมวลผลสัญญาณ SIGTERM อย่างสง่างาม?
สมมติว่าเรามีดีมอนตัวเล็ก ๆ เขียนในไพ ธ อน: def mainloop(): while True: # 1. do # 2. some # 3. important # 4. job # 5. sleep mainloop() และเรา daemonize โดยใช้start-stop-daemonซึ่งเริ่มต้นโดยส่งSIGTERM( TERM) --stopสัญญาณ #2สมมติว่าขั้นตอนการดำเนินการในปัจจุบันมี และในขณะนี้เรากำลังส่งTERMสัญญาณ สิ่งที่เกิดขึ้นคือการกระทำนั้นสิ้นสุดลงทันที ฉันพบว่าฉันสามารถจัดการเหตุการณ์สัญญาณใช้แต่สิ่งที่เป็นว่ามันยังคงขัดจังหวะการดำเนินการในปัจจุบันและผ่านการควบคุมไปsignal.signal(signal.SIGTERM, handler)handler ดังนั้นคำถามของฉันคือ - เป็นไปได้หรือไม่ที่จะไม่ขัดจังหวะการทำงานปัจจุบัน แต่จัดการTERMสัญญาณในเธรดที่แยกจากกัน (?) เพื่อให้ฉันสามารถตั้งค่าshutdown_flag = Trueเพื่อให้mainloop()มีโอกาสหยุดอย่างสง่างาม?