Pour ceux qui aiment l' debug=Trueoption et utilisent Tornado-multiprocess, l'erreur suivante sera générée:
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()
En effet, debug=Truecharger IOLoopet ne peut pas être chargé deux fois.
Selon la documentation
La définition de debug = True est équivalente à autoreload = True, compiled_template_cache = False, static_hash_cache = False, serve_traceback = True.
Ainsi, lorsque vous utilisez debug=TrueTornado, vous définissez également (pour plus de commodité) un autre indicateur: autoreload=Truequi "surveille" les modifications et recharge le serveur.
L' autoreloadoption est celle qui ne peut pas être activée lors de l'utilisation de plusieurs processus. Vous devez donc le configurer comme suit:
if __name__ == "__main__":
application = tornado.web.Application([
(r"/", MainHandler)
], debug=True, autoreload=False)
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()