36

CPU を集中的に使用する画像処理を行い、戻るのに数秒かかるフラスコ REST エンドポイントがあります。多くの場合、このエンドポイントは呼び出された後、クライアントによって中止されます。このような状況では、処理をキャンセルしたいと思います。フラスコでこれを行うにはどうすればよいですか?

node.js では、次のようにします。

req.on('close', function(){
  //some handler
});

フラスコには、処理中の特定の時点でチェックして閉じている場合に返すことができる、同様のメソッドまたは同期メソッド (request.isClosed()) があることを期待していましたが、見つかりません。

接続がまだ開いていることをテストするために何かを送信し、失敗した場合は例外をキャッチすることを考えましたが、Flask はすべての出力をバッファリングするように見えるため、処理が完了して結果を返そうとするまで例外はスローされません。

確立された接続が、ホスト マシンのソフトウェアによって中止されました

クライアントがリクエストを中止した場合、途中で処理をキャンセルするにはどうすればよいですか?

4

3 に答える 3