2012-04-25 71 views
2

我使用燒瓶構建後端API的應用程序時,有一件事我需要做的是:在燒瓶中使用什麼庫來實現這種異步操作?

1. get the content the user submited 
2. send a twitter with that content 
3. save the content to my DB and return the id of the new item 

現在的問題是,第2步的時間太長的時間,因此減慢了總計請求時間。

更具體,步驟2:twitter.send(content)

我如何才能讓第2步異步? PS:我不需要知道第2步是否成功

回答

4

還有一瓶芹菜pacakge.http://pypi.python.org/pypi/Flask-Celery。 http://ask.github.com/celery/getting-started/introduction

你可以告訴芹菜異步做什麼。

  1. 內容獲得用戶提交的
  2. 發送芹菜,它應儘快,因爲它可以
  3. 保存的內容數據庫,並返回新項目的ID發送的tweet消息。

第2步coudl只要需要這種方式,用戶永遠不會知道。

UPDATE:
由於芹菜3.0,不需要flask-celery,您可以直接使用芹菜:pip install -U Celery

4

我發現芹菜等分佈式任務框架過於重量級的簡單任務,如你的還是我的,這異步發送電子郵件。

我最終使用工作進程池來處理我的電子郵件。該方法在this answerAsynchronous method call in Python?問題中進行了解釋。在這個問題上接受的答案提供了一個使用Pool但沒有裝飾器的解決方案,因此它更簡單。