ฉันค่อนข้างใหม่กับ python นี่คือคำถามของฉัน
ใน main.py ฉันเริ่มต้นสองคลาสและเว็บเซอร์ของพายุทอร์นาโด:
plotter = Plotter(config=Config)
plotter_thread = PlotterThread(config=Config, plotter=plotter)
plotter_thread.daemon = True
plotter_thread.start()
handler = [
(r"/", MainHandler),
(r"/upload", UploadHandler, dict(config=Config)),
(r"/uploads/(.*)", tornado.web.StaticFileHandler, {"path": Config.uploads_dir}),
(r"/ws", WebsocketHandler, dict(plotter_thread=plotter_thread)),
(r"/(.*)", tornado.web.StaticFileHandler, {"path": "./web/build"})
]
settings = dict(
debug=True,
autoreload=True,
template_path=os.path.join(os.path.dirname(__file__), 'web/build'),
static_path=os.path.join(os.path.dirname(__file__), 'web/build/static')
)
application = tornado.web.Application(handler, **settings)
application.listen(Config.webserver_port)
นี้กำลังดำเนินไปด้วยดี ในคลาส Plotter ฉันกำลังนำเข้าคลาส WebsocketHandler ฉันต้องการใช้วิธี WebsocketHandler.send_position
def move_to_norm(self, x_norm, y_norm, pen=-1, brake=False):
WebsocketHandler.send_position(x_norm, y_norm, pen)
motor_b_target, motor_c_target = self.motor_targets_from_norm_coords(x_norm, y_norm)
self.move_to_targets((motor_b_target, motor_c_target), pen, brake)
ในนั้น. ทุกครั้งที่ฉันเรียกใช้เมธอด move_to_norm ของคลาส Plotter ฉันจะได้รับข้อผิดพลาด:
RuntimeError: ไม่มีการวนซ้ำเหตุการณ์ปัจจุบันในเธรด 'Thread-1'
และไม่รู้ว่าทำไม!
ฉันมีพฤติกรรมเช่นเดียวกันเมื่อฉันเรียกเมธอด WebsocketHandler.send_message ในคลาส PlotterThread
ฉันเข้าใจผิด Threading หรือเกี่ยวกับพายุทอร์นาโด?