2012-11-11 63 views
13

我一直在使用Twilio處理SMS消息的Flask應用程序,將它們存儲在數據庫中,並通過JSONP GET請求提供對前端的訪問。我使用supervisord進行了守護進程,這似乎工作得很好,但每隔幾天它就開始掛起(即所有請求永遠存在或超時),我必須重新啓動進程。 (我也試着用nohup來簡單地運行它,但同樣的問題。)我懷疑sqlite3是偶爾阻塞的,但是我最近的測試是編寫一個不涉及數據庫訪問的請求方法,並且這是超時的太。我非常困惑 - 希望你已經看到了類似的東西,或知道可能會導致這種情況。Flask app偶爾掛着

相關的代碼可以發現here,並且它當前正在運行(並停止,因爲這個職位的)在mattnichols.net:6288

感謝我的VPS!

更新:你認爲這可能是Flask的dev服務器的問題嗎?我想相信用Tornado(或類似的東西)包裝我的應用程序可以解決這個問題,但我也用其他方式運行了更長的時間,而且沒有使用dev服務器的問題。

+1

您可能會用完打開的文件句柄,特別是如果此代碼獲得大量請求。典型的ulimit是4096.嘗試增加,或者 - 更好 - 從sqlite移開並使用文檔db。您不需要關係開銷來存儲SMS消息。 –

+0

感謝您的建議 - 我在這一點上幾乎沒有任何要求,我很確定這個問題不是與數據庫相關的。關於關係開銷的非必要性的觀點雖然值得商榷,但我一定會考慮切換到基於文檔的數據庫。 – man1

+0

我的確發現,對我來說,Flask dev服務器在某些計算機上有時會非常滯後(我認爲這是因爲涉及IPv6的一些問題,儘管我不記得了)。在CherryPy服務器上運行我的Flask應用程序的確有更好的運氣(鏈接:http://flask.pocoo.org/snippets/24/) – Michael0x2a

回答

9

爲了記錄,這似乎已經通過使用Tornado而不是Flask dev服務器運行我的應用程序來解決。將我的Flask代碼包裝到Tornado服務器中是非常容易的,一旦我決定這麼做:如果發現自己處於相同的情況,請參閱http://flask.pocoo.org/docs/deploying/wsgi-standalone/#tornado

+2

非常感謝你張貼這個!龍捲風似乎正在爲我解決問題。也請鏈接到http://stackoverflow.com/questions/11150343/slow-requests-on-local-flask-server。 – gatoatigrado

+0

我的Flask應用程序甚至尚未部署,但由於未知原因掛起。那麼,從昨天開始我沒有重啓電腦。在任何情況下解決問題,謝謝。 –

+0

我有同樣的問題,似乎也爲我解決它。謝謝 – 2014-10-19 22:05:26