2015-07-13 17 views
4

有沒有辦法將請求複製到Flask中的芹菜任務中,以便任務在啓動任務的請求上下文內執行?
我需要在celery任務中訪問瓶安全當前用戶,但由於任務不在請求上下文中,所以我不能這樣做。我需要來自請求的附加信息,因此只需將當前用戶轉發給任務就無能爲力。如何在Python Flask中的芹菜任務中保留請求上下文?

我的任務確實插入數據庫。它需要當前用戶保存創建該行的用戶的ID。將用戶對象傳遞給任務將解決問題。但是,應用程序邏輯是這樣的,每個插入/刪除/更新都通過刷新事件記錄,記錄修改用戶,他的IP,原始URL,插入的數據......)

日誌事件像我之前說的那樣完成,它在99%的情況下工作。 但是,當我有我想成爲一個芹菜任務一個漫長的任務,請求 數據不可用,也不是當前用戶(因爲它是原來的請求上下文之外)

+0

當然,我詳細闡述了我的情況 – Mensur

+0

你有沒有找到答案Mensur? – pors

回答

0

的不亂因爲它們是不可序列化的,因此可以將請求或current_user對象傳遞給celery任務。但是人們通過創建一個包裝來調用請求上下文中的芹菜任務來解決這個問題。

Celery task in a Flask request context博客文章詳細探討了這個話題。要點Xion,並由aviaryan與請求上下文包裝派生。