2012-04-25 8 views
2

私は、アプリケーションのバックエンドのAPIを構築するためにフラスコを使用しています、私がする必要がある一つのことはされています。それは、合計要求時間を遅くするようになりました問題は、ステップ2でフラスコ内でこのaync操作を達成するために使用するライブラリは何ですか?

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は次のようになります。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. 送信セロリ、それは、すぐにそれがDBと新しいアイテムのIDを返すことがコンテンツの保存
  3. ことができますようにつぶやきを送信する必要があり、メッセージを送信します。

ステップ2 coudlは、この方法で必要とし、ユーザーがわからない限り長くとってください。

UPDATE:
セロリ3.0、flask-celeryが必要とされていないので、あなたがして直接セロリを使用することができます。pip install -U Celery

4

私はセロリや他の分散タスクフレームワークを見つけ、あまりにも、あなたや私のような単純なタスクのためにヘビー級、どの非同期で電子メールを送信しています。

私はワーカープロセスのプールを使用してメールを処理しました。この方法は、Asynchronous method call in Python?の質問にthis answerで説明されています。この質問に対する回答は、プールを使用するがデコレータを使用しないので、簡単です。

関連する問題