2012-06-01 21 views
0

問題幾乎說明了一切。如果我在帶有Supervisor的服務器上運行Tornado,當我部署代碼並需要重新啓動Tornado服務器時,活動請求會發生什麼情況?他們是否中途要求?他們允許完成嗎?當Tornado停止時,它對主動請求做什麼?

+0

不是真正的supervisord問題; supervisord將以與SIGTERM相同的方式重啓守護進程。 –

回答

2

Supervisord發送一個信號如HUP或TERM到龍捲風過程,最重要的一點是龍捲風如何處理它。

不幸的是,當龍捲風得到像HUP,TERM,INT這樣的信號時,它會簡單地退出。

Tornado有一個名爲autoreload的子模塊,它使應用程序可以檢測代碼文件的更改並重新加載應用程序,但它僅適用於一個進程的調試模式,而不適用於WSGI應用程序。它是開發工具。

但是,我們可以通過手動在運行tornado.autoreload._reload函數內定義一個函數,並將其註冊爲HUP信號。 tornado.autoreload.add_reload_hook可以添加重載時應該調用的函數。

由於龍捲風在fork模式下不能很好地管理進程,因此建議爲不同的端口運行多個獨立的進程。在這種模式下,_reload將像設置調試標誌一樣工作。

畢竟,測試和基準測試,確保它在您的應用程序中運行良好。