2015-05-20 49 views
3

我一直在研究龍捲風web框架,但我仍然沒有清楚地瞭解ioloop的功能,特別是如何在多線程中使用它。 是否有可能爲多個服務器創建單獨的ioloop實例?Tornado ioloop +線程

回答

3

絕大多數Tornado應用程序應該只有一個IOLoop,在主線程中運行。您可以在同一個IOLoop上運行多個HTTPServers(或其他服務器)。

可以創建多個IOLoops併爲每個IOLoops賦予它自己的線程,但這很少用,因爲GIL確保一次只有一個線程正在運行。如果確實使用了多個IOLoops,則必須注意確保不同的線程僅通過線程安全方法(即IOLoop.add_callback)相互通信。

+0

謝謝本,請給我一些關於IOLoop類和它的方法的更多信息。我無法清楚地理解ioloop的instance(),current(),make_current()方法的用法。謝謝。 – Tejas

+0

通常,您應該使用current()來獲取活動的IOLoop。 instance()主要用於向後兼容(儘管在有多個IOLoops時它有時很有用)。很少需要使用make_current();它主要用於創建和銷燬許多IOLoops的測試等情況。 –

+1

只有好奇心,當instance()''current()'沒有創建一個新的IOLoop時,如何實現「每個線程有一個IOLoop」? –