複数のスレッドで複数のIOLoopを実行しようとしていますが、IOLoopが実際にどのように動作するのか不思議です。マルチスレッドのTornado multiple IOLoop
class WebThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self, name='WebThread')
def run(self):
curdir = os.path.dirname(os.path.realpath(__file__))
application = Application() #Very simple tornado.web.Application
http_server_api = tornado.httpserver.HTTPServer(application)
http_server_api.listen(8888)
logging.info('Starting application')
#tornado.ioloop.IOLoop.instance() is singleton, not for thread, right?
ioloop = tornado.ioloop.IOLoop()
ioloop.make_current()
ioloop.start()
ドキュメントによると、私はそれはシングルトンだと私はスレッドで働いていますので、IOLoop.instance()を使用することはできません。だから私は自分のIOLoopを作った。しかし、このコードはポート8888で聞きますが、Webページをレンダリングすることはできません。私は何かが欠けているのだろうか、何かの方法でhttp_serverをIOLoopに結びつける必要があるのだろうか?
また、最後の3行を削除してtornado.ioloop.IOLoop.instance().start
と置き換えると、1つのスレッドで完全に機能することがわかりました。しかし、シングルトンと自己作成IOLoopの違いは何ですか?
私は竜巻には新しく、どんな答えでも歓迎されます。
でこれを有効にすることができ
:あなたは、で終わるだろう。私はhttp_serverが現在のIOLoopと対話していることを知らなかった。説明のためにとてもマッシュアップしてくれてありがとう。 –