我有一個特別大的任務需要60秒才能完成。 Heroku的路由器在30秒後發出一個超時錯誤,如果不返回任何,所以使用yield
陳述有助於解決:使用yield來異步Flask響應,但在長異步調用結束時添加標題信息?
def foo():
while not isDone:
print("yield")
yield " "
time.sleep(10)
return Response(foo(), mimetype='text/html')```
(或類似的東西)
這工作都很好,除了在我的在我的很長時間任務結束時,它會決定接下來前進到哪裏。這是很容易設置轉發的位置:在這個例子中/bar
是靜態
response = Response(foo(), 302, mimetype='text/html')
response.headers['Location'] = '/bar'
return response
除了這一點,我需要分配一個動態的,只有在很長的過程的結束。
那麼有沒有辦法在非常長的異步過程結束時動態分配轉發位置?
使用芹菜做耗時的任務並使用ajax來查詢結果。 – stamaimer
@stamaimer雖然芹菜/兔子是一個不錯的選擇,但我在允許使用的東西方面受到限制(一切都需要來自客戶的批准等級,並且等待2-3周才能獲得簡單的2號錯誤不這樣做)。如果Flask不能單獨完成,那就這樣吧,但我需要檢查。 –