django+nginx+uwsgi 504 Gateway Time-out 解決辦法
報錯
504 Gateway Time-out
分析
nginx和uwsgi整合時有三個參數可以用於設置超時時間:
1.uwsgi_connect_timeout:
默認60秒,與uwsgi-server連接的超時時間,該值不能超過75秒.若在超時時間內未能成功連接則斷開連接嘗試
2.uwsgi_read_timeout:
默認60秒,nginx等待uwsgi進程發送響應數據的超時時間。若有需要長時間運行才能產生輸出結果的uwsgi進程則需將此參數調高。若在錯誤日志文件中看到 upstream timed out需將此參數調高。若超過超時時間還未收到響應則nginx關閉連接。
3.uwsgi_send_timeout:
默認60秒,nginx向uwsgi進程發送請求的超時時間。超時時間由兩次寫操作的時間間隔算,而非整個請求。若超過超時時間仍沒寫入動作則nginx關閉連接。
另外:uwsgi自身還有一個參數harakiri,若每次請求需要花費超過該值的時間則放棄該請求處理相應的worker被收回
解決
在nginx配置的server - location中添加 uwsgi_send_timeout 和 uwsgi_read_timeout