2017-02-02 23 views
0

我目前有一個應用程序部署在heroku上。Python瓶heroku - 圖像上傳字段(WTForms)使APP超時(花太長時間)

它從1天開始就生活了,我注意到在日誌中用戶經常在某個站點上發生H13或H28錯誤。

我已經發現了這個問題。在這個網站上,用戶可以上傳圖片(最多10張)。 我使用那裏1輸入字段的圖像,我允許多選,所以上傳多個圖像的唯一方法是一次做。

WTForms:

bild = FileField("Weitere Bilder hochladen", validators=[FileAllowed(['jpg', 'png', 'jpeg'], 'Nur Bilder im Formal JPG oder PNG')]) 

Heroku的具有30秒的默認超時如果不被處理的請求。但是上傳多個圖像的過程時間過長,因此heroku會中斷該過程並顯示自定義錯誤頁面。

我的想法:

爲了解決這個我會禁用多選和WTForms增加9個產生額外FileFields,因此用戶逐一上傳圖片,這是要走的路?

或者我應該添加一個進度條並增加超時時間,這裏的最佳做法是什麼?

編輯

好吧,我找到了一些解決方案,但我想用進度條和Heroku的增加請求超時。

我會盡量上傳新procfile:

web: gunicorn main:app --timeout 120 

回答

0

好吧,我設法解決這個問題,但我做到了快速,效率不高。

最好的解決辦法似乎是在這裏: Heroku`s solution

我與我的應用程序增加超時解決了這個問題。所以我上傳的新procfile我的Heroku應用程序:

web: gunicorn main:app --timeout 120 

之後,我實現加載動畫,我這就使得長期請求表單的提交按鈕。我添加的部分是在span tag

<button type="submit" class="btn add-btn"> <span class="ani-holder"><span class="glyphicon glyphicon-refresh glyphicon-refresh-animate"></span></span> Zimmer einstellen </button> 

Initialy我做動畫是display: none;。如果按鈕被點擊,表單將提交。在這裏我使用jQuery加載動畫的顯示更改爲display: inherit;,並使它看起來更好,我也改變了按鈕的背景顏色:在表單提交的請求被執行

$('#regi').submit(function(){ 
    $('.ani-holder').css("display", "inherit"); 
    $('.add-room-container .add-btn').css("background-color", "#afddfe");   
}); 

功能。之後我redirect url並重新加載頁面,所以說它。如果請求很快,那麼你不會看到任何東西。