2010-12-29 12 views
0

私はAPIを作成しており、タスクを実行して実行する関数を持っています。タスクが正常に終了すると、ステータスは「完了」に設定されます。さて、APIのユーザーが、同じタスク(または既に完了している他のタスク)を同じ関数に送り返すことを偶然(何らかの理由で)言うことができます。 APIは何をすべきですか?タスクAPI - 既に完了したタスクの処理

  • 例外
  • を投げ、私は、タスクを再実行し、それが(再び)完了/実行されていること(イベントまたは任意経由)をユーザーに伝えてきたかのようなふりをします。
  • 何もしないで無視してください。

このようなものの標準またはベストプラクティスはありますか?

答えて

1

デッドロックやその他のロジックバグが発生する可能性があります(つまり、イベントを作成して待機し、ある時点でリセットする必要があります。デッドロック)。また、成功した1回のタスクの実行ごとに2回呼び出されると、ハンドラは失敗する可能性があります。

何もしないことは多少なりとも同じです。ハンドラは今は失敗できません:)しかし、それらはまったく呼び出されません。ハンドラがスポーンスレッドと必要な通信を行った場合、バグが発生しやすくなります。

タイミングによっては、最悪の場合があります。私。

タスクステータスが「開始していない」場合を除き例外をスローします。万が一、必要な場合には、ユーザーはいつでも状況を確認し、必要な処理を実行することができます。

+0

いいですね。私は可能な限り例外を投げるのを避けようとしますが、あなたが正しいと思うのは、この場合、それが最良のアイデアです。ありがとう。 – Chad

関連する問題