DjangoでWebサービス(RESTful API)を作成しています。APIは、独自の内部データと、Webサービスレイヤーがアクセスする他のAPIの両方をラップします。
私たちが使用しているAPIの1つには、1分程度のHTTP応答を返さない長時間実行の呼び出しがあります。APIには、現在の操作のステータスを取得するための個別のAPI呼び出しがありますが、これは、ユーザーが長時間実行操作を開始してから、ステータスについて個別のプロセスポーリングを行う必要があることを意味します。APIがそのように機能することは望ましくありません。最初のリクエストは、進行中であることを示す応答を返すだけです。
したがって、実行時間の長いリクエストを受け取ったときに、APIへの独自のHTTPリクエストを非同期的に開始し、応答を返します。次に、ステータスポーリングを取得するたびに、それを通過させて、取得した応答で応答します。操作が完了したというコールバックを受け取ったら、次にステータスポーリングを取得したときに、操作が完了したことを応答してデータを返します。これは、ステータスで応答するために進行中の長時間実行リクエストのリストをチェックするために、着信ステータスリクエストのハンドラーが必要になることを意味します。
これはこれにアプローチするための合理的な方法のように思われますか?この種のことを簡単にするために、どのPythonライブラリを調べる必要がありますか?イベントレットやツイストのような低レベルのものを使うのか、セロリのような少し重いものを使うのかはわかりません。セロリはこの種のものの通常の推奨事項のようですが、私はその場所が何であるかを100%確信していません。
ありがとう、スペンサー