Django กำลังบันทึกไปที่หน้าต่าง wxpython หรือไม่

ฉันกำลังเขียนยูทิลิตี้เพื่อเริ่มกระบวนการเซิร์ฟเวอร์ django ที่ส่งออกบันทึกไปยัง TextCtrl ในหน้าต่าง wxpython น่าเสียดายที่แนวทางที่แตกต่างกันสองสามวิธีได้นำไปสู่ปัญหาแปลกๆ ที่ระบบปฏิบัติการ (OSX ในกรณีนี้) ทำให้โปรแกรมหยุดทำงานพร้อมข้อร้องเรียนเกี่ยวกับ "คำสั่งที่ผิดกฎหมาย" หลังจากรายการบันทึกที่ประสบความสำเร็จสองสามรายการ

ขณะนี้ฉันกำลังทำสิ่งนี้โดยใช้คลาสย่อย logging.Handler ที่โพสต์เหตุการณ์ไปยัง wx ซึ่งมีบันทึกการบันทึกที่จะแสดงในหน้าต่าง มีแนวทางที่ดีกว่านี้ไหม?

ขอบคุณ!


person Taylor Nelms    schedule 24.01.2019    source แหล่งที่มา


คำตอบ (1)


wxPython ต้องการให้มันเป็นเธรดหลัก ดังนั้นฉันเดาว่านั่นน่าจะเป็นสาเหตุที่แท้จริงของปัญหาของคุณ คุณมีแนวทางที่ดีสองสามวิธีที่จะลอง

ขั้นแรก คุณสามารถเปิดกระบวนการเซิร์ฟเวอร์ Django เป็นเธรดจากโปรแกรม wxPython ของคุณได้ จากนั้นคุณสามารถใช้วิธี thread-safe ของ wxPython (wx.CallAfter, wx.PostEvent) เพื่อสื่อสารกับ UI

หรือคุณสามารถเปิด Django แยกกันและบันทึกลงในไฟล์ได้ จากนั้นเปิด wxPython และกำหนดให้ไฟล์บันทึกทำงานโดยพื้นฐาน

person Mike Driscoll    schedule 28.01.2019
comment
ขอบคุณ! ใช่แล้ว ในที่สุดฉันก็ปิดการใช้งานการบันทึก Django แบบพิเศษ ซึ่งนำเหตุการณ์ไปยังตัวจัดการการบันทึก wx ของฉัน การทำให้การดำเนินการนั้น wx.CallAfter แก้ไขมันทั้งหมด! - person Taylor Nelms; 28.01.2019