ฉัน googled และพบคำแนะนำว่าฉันควรตั้งโหมดดีบักใน Tornado เพื่อให้สามารถโหลดไฟล์ใหม่โดยอัตโนมัติในการอัปเดต แต่ฉันไม่พบสตริงที่แน่นอนที่จะแทรก ฉันลองชุดค่าผสมที่แตกต่างกันเช่นนี้application.settings = {"Debug": True}
แต่ไม่ได้ช่วย
ฉัน googled และพบคำแนะนำว่าฉันควรตั้งโหมดดีบักใน Tornado เพื่อให้สามารถโหลดไฟล์ใหม่โดยอัตโนมัติในการอัปเดต แต่ฉันไม่พบสตริงที่แน่นอนที่จะแทรก ฉันลองชุดค่าผสมที่แตกต่างกันเช่นนี้application.settings = {"Debug": True}
แต่ไม่ได้ช่วย
คำตอบ:
นี่คือตัวอย่างที่ปรับแต่งแล้วจากไซต์ทอร์นาโด
if __name__ == "__main__":
application = tornado.web.Application([
(r"/", MainHandler)
], debug=True)
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
สำหรับผู้ที่ชื่นชอบdebug=True
ตัวเลือกและใช้ Tornado-multiprocess ข้อผิดพลาดต่อไปนี้จะได้รับการยก:
Traceback (most recent call last):
File "./main.py", line 54, in <module>
server.start(0) # forks one process per cpu
File "/Users/me/Library/Python/2.7/lib/python/site-packages/tornado/tcpserver.py", line 221, in start
process.fork_processes(num_processes)
File "/Users/me/Library/Python/2.7/lib/python/site-packages/tornado/process.py", line 130, in fork_processes
raise RuntimeError("Cannot run in multiple processes: IOLoop instance "
RuntimeError: Cannot run in multiple processes: IOLoop instance has already been initialized. You cannot call IOLoop.instance() before calling start_processes()
นี่เป็นเพราะการdebug=True
โหลดIOLoop
และมันไม่สามารถโหลดได้สองครั้ง
ตามเอกสาร
การตั้งค่า debug = True เทียบเท่ากับ autoreload = True, compiled_template_cache = False, static_hash_cache = False, เสิร์ฟ _traceback = True
ดังนั้นเมื่อใช้debug=True
พายุทอร์นาโดยังตั้งค่า (เพื่อความสะดวก) อีกธง: autoreload=True
ซึ่ง "ดู" สำหรับการเปลี่ยนแปลงและโหลดเซิร์ฟเวอร์
autoreload
ตัวเลือกหนึ่งที่ไม่สามารถที่จะเปิดเมื่อมีการใช้กระบวนการหลาย ดังนั้นคุณต้องกำหนดค่าเช่น:
if __name__ == "__main__":
application = tornado.web.Application([
(r"/", MainHandler)
], debug=True, autoreload=False)
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()