2016-09-10 11 views
0

私はここhttp://www.tornadoweb.org/en/stable/guide/running.html(server.start(n))を説明した第一の方法を使用して、複数のプロセス間でトルネードHTTPSサーバを実行しているトルネード複数のプロセス:複数のMySQL接続を作成

サーバがローカルのMySQLインスタンスに接続されています。私はTornadoプロセスごとに独立したMySQL接続をしたいと考えています。

しかし、今はSHOW PROCESSLISTの出力に従ってMySQL接続が1つしかありません。私はserver.start(n)とIOLoop.current()を呼び出す前に接続を確立するので、これが起こると思います。

は、私が本当に理解していないこと(例えば、グローバル同じモジュール内の変数)、または完全に独立してserver.start(n)を呼び出した後に作成されたプロセスは、いくつかのデータを共有するかどうかです。

server.start(n)を呼び出した後に接続を確立する必要がありますか?またはIOLoop.current()。start()を呼び出した後?私がそうするなら、私はTornadoプロセスごとに1つのMySQL接続を持つでしょうか?

おかげ

答えて

1

各子プロセスstart(n)が呼び出されたときに親プロセスに存在していた変数のコピーを取得します。接続のようなものでは、これは通常問題を引き起こします。マルチプロセスモードを使用する場合は、子プロセスを開始する前に、できるだけ行うことが重要ですので、start(n)後までmysqlの接続を作成しません(ただし、IOLoop.start()前に、サーバーが停止するまでIOLoop.start()は戻りません)。

+1

私は、TornadoのWebサイトで推奨されているソリューションを選択しました。つまり、nginxを複数のTornadoプロセスの前にリバースプロキシとして配置しています。これにより、ダウンタイムゼロでアップデートを実行できるという貴重な利点が得られます。 – pAkY88

関連する問題