我正在使用此处描述的第一种方法http://www.tornadoweb.org/en/stable/guide/running.html(server.start(n))在多个进程中运行Tornado HTTPS服务器
服务器连接到本地MySQL实例,我希望每个Tornado进程都有一个独立的MySQL连接。
但是,现在我根据SHOW PROCESSLIST的输出只有一个MySQL连接。我想这是因为我在调用server.start(n)和IOLoop.current()。start()之前建立了连接吗?
我真正理解的是,在调用server.start(n)之后创建的进程是否共享一些数据(例如,同一模块中的全局变量)或者是完全独立的。
我应该在调用server.start(n)后建立连接吗?或者在调用IOLoop.current()。start()之后?如果我这样做,每个Tornado进程是否会有一个MySQL连接?
由于
答案 0 :(得分:1)
每个子进程都会在调用start(n)
时获取父进程中存在的变量的副本。对于像连接这样的事情,这通常会导致问题。使用多进程模式时,在启动子进程之前尽可能少地做很重要,所以不要在start(n)
之后创建mysql连接(但在IOLoop.start()
之前; IOLoop.start()
在服务器停止之前不会返回。