それは
Ctrl+C
で終了するので、長い時間がかかる理由私にはわからないが、それは
Ctrl+\
(Linuxターミナル)を押して、いくつかのケースでは私のために働きました
Pythonでは、シグナルは常にメインスレッドによって処理されます。 IOLoopをメインスレッドから実行すると、サーバーがアイドル状態でIOを待っているときにIOLoopがブロックされます。その結果、すべての信号がスレッドで起床して起床します。つまり、要求を送信するとサーバーが停止する理由が説明されています。
UPDATE:あなたはループを開始するとき
ioloop = tornado.ioloop.IOLoop.instance()
set_ping(ioloop, timedelta(seconds=2))
ioloop.start()
:
def set_ping(ioloop, timeout):
ioloop.add_timeout(timeout, lambda: set_ping(ioloop, timeout))
、その後:あなたはこのような何かを試すことができます。その結果、select
が2.0秒のタイムアウトで呼び出され、ブロックされません。 (またIOLoop Timeouts参照)
(注:私はLinux上で自分の状況を再現することができませんでした、私は手動で使用することがselect
を設定するので、私はこれが役立つことを100%の保証を与えることはできませんが、もっともらしく聞こえるにもかかわらず)
これは単純なTornadoアプリケーションですか、通信用にデータベースコネクタや他のモジュールで使用していますか? ctrl-cとスレッドには興味深いやりとりがあるので、知っておくと便利です。 – koblas
@koblas:私はウェブソケットを使用していますが、現在データベースはありません。 –