2

私はflaskを使用してアプリケーションのバックエンドAPIを構築していますが、実行する必要があることの1つは次のとおりです。

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

2 に答える 2

4

フラスコセロリpacakgeがあります。http://pypi.python.org/pypi/Flask-Celery。 http://ask.github.com/celery/getting-started/introduction

セロリに非同期で何をすべきかを伝えることができます。

  1. コンテンツユーザーを送信する
  2. セロリにできるだけ早くツイートを送信するようにメッセージを送信します
  3. コンテンツをdbに保存し、新しいアイテムのIDを返します。

ステップ2coudlは、この方法が必要であり、ユーザーが知ることはない限り、時間がかかります。

更新:
Celery 3.0以降、フラスコセロリは必要ありません。次の方法でセロリを直接使用できます。 pip install -U Celery

于 2012-04-25T13:16:21.743 に答える
4

Celeryやその他の分散タスクフレームワークは、非同期で電子メールを送信するあなたや私のような単純なタスクには重すぎると思います。

結局、メールを処理するためにワーカープロセスのプールを使用することになりました。このメソッドは、Pythonでの非同期メソッド呼び出しに対するこの回答で説明されていますか?質問。この質問で受け入れられた回答は、プールを使用するがデコレータを使用しないソリューションを提供するため、より簡単です。

于 2012-04-27T04:22:51.937 に答える