Đối với những người thích debug=True
tùy chọn và sử dụng đa xử lý Tornado, lỗi sau sẽ được nêu ra:
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()
Điều này là do debug=True
tải IOLoop
và nó không thể được tải hai lần.
Theo tài liệu
Đặt debug = True tương đương với autoreload = True, comp_template_cache = false, static_hash_cache = false, Serv_tracBack = True.
Vì vậy, khi sử dụng debug=True
Tornado cũng đặt (để thuận tiện) một cờ khác: autoreload=True
"theo dõi" các thay đổi và tải lại máy chủ.
Các autoreload
tùy chọn là một trong đó không thể được bật lên khi sử dụng đa quá trình. Vì vậy, bạn cần phải cấu hình nó như vậy:
if __name__ == "__main__":
application = tornado.web.Application([
(r"/", MainHandler)
], debug=True, autoreload=False)
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()