我一直在使用Twilio處理SMS消息的Flask應用程序,將它們存儲在數據庫中,並通過JSONP GET請求提供對前端的訪問。我使用supervisord進行了守護進程,這似乎工作得很好,但每隔幾天它就開始掛起(即所有請求永遠存在或超時),我必須重新啓動進程。 (我也試着用nohup來簡單地運行它,但同樣的問題。)我懷疑sqlite3是偶爾阻塞的,但是我最近的測試是編寫一個不涉及數據庫訪問的請求方法,並且這是超時的太。我非常困惑 - 希望你已經看到了類似的東西,或知道可能會導致這種情況。Flask app偶爾掛着
相關的代碼可以發現here,並且它當前正在運行(並停止,因爲這個職位的)在mattnichols.net:6288
感謝我的VPS!
更新:你認爲這可能是Flask的dev服務器的問題嗎?我想相信用Tornado(或類似的東西)包裝我的應用程序可以解決這個問題,但我也用其他方式運行了更長的時間,而且沒有使用dev服務器的問題。
您可能會用完打開的文件句柄,特別是如果此代碼獲得大量請求。典型的ulimit是4096.嘗試增加,或者 - 更好 - 從sqlite移開並使用文檔db。您不需要關係開銷來存儲SMS消息。 –
感謝您的建議 - 我在這一點上幾乎沒有任何要求,我很確定這個問題不是與數據庫相關的。關於關係開銷的非必要性的觀點雖然值得商榷,但我一定會考慮切換到基於文檔的數據庫。 – man1
我的確發現,對我來說,Flask dev服務器在某些計算機上有時會非常滯後(我認爲這是因爲涉及IPv6的一些問題,儘管我不記得了)。在CherryPy服務器上運行我的Flask應用程序的確有更好的運氣(鏈接:http://flask.pocoo.org/snippets/24/) – Michael0x2a