2013-11-01 30 views
3

我知道app.after_requestapp.teardown_request,但有什麼辦法可以後運行記錄指令響應已經刷新到客戶端..即。這種方式不會影響客戶的表現?瓶 - 響應後,記錄刷新

+1

我懷疑這很容易。 Flask運行在[WSGI](http://wsgi.readthedocs.org/en/latest/)之上,它定義了Python代碼(如Flask或Django)如何接收有關請求的信息,並返回結果。該函數本身非常簡單,但是導入的是Flask將需要返回信息主體(並且因此結束其運行代碼的能力,因爲線程返回到稱爲瓶的代碼,例如mod_wsgi)。圍繞這個限制可能有辦法,但除非你想深入研究WSGI和Flask的膽量,否則你可能應該放棄這一點。 –

回答

2

我很想說request_finished信號可以工作,但現在測試它,它會一直等到聽衆完成後再返回給用戶。

所以我認爲這會讓你實現一個任務隊列 - Flask有一些關於getting Celery based background tasks工作的文檔。所以,當你到達緩慢的日誌記錄命令時,你只需將任務添加到Celery隊列中,完成對用戶的響應,然後讓Celery工作人員盡其所能地完成任務。