2014-02-19 38 views
0

我有一個使用Flask的HTTP API,並且在一個特定的操作中,客戶端使用它來檢索從第三方API獲取的信息。檢索是用芹菜任務完成的。通常情況下,我的方法是接受客戶端對該信息的請求,並返回一個303 See Other響應,其URI可以在後臺作業完成時作爲響應輪詢。Flask請求等待異步後臺作業

但是,有些客戶需要在單個請求中完成操作。他們不想輪詢或遵循重定向,這意味着我必須同步運行後臺作業,保持連接直到完成,並以相同的響應返回結果。我知道Flask streaming,但是如何用Flask做這樣的長時間共享?

+0

爲了實現這一目標,只需在作業完成前將響應返回給客戶端即可。但是,請確保在gevent wsgi容器內部運行,以免最終耗盡服務器的資源。對於開發目的,使用'threaded = True'運行服務器。 – sean

+0

問題是如何防止客戶端在此期間超時。 –

+0

你真的很受客戶的支配。根據客戶端的不同,推送某種標識符可能會比較好,以便在發生請求時出現任何原因導致連接關閉的情況下,可以獲得響應。 – sean

回答

0

龍捲風會做的伎倆。 燒瓶不是爲了同步而設計的。 Flask實例一次處理一個線程中的一個請求。因此,當您持有該連接時,將不會繼續進行下一個請求。

+0

這不是問題。 –