任务API - 处理已完成的任务

时间:2010-12-29 21:11:41

标签: api exception-handling task

我正在创建一个API,并且有一个执行任务并运行它的函数。任务成功完成后,其状态将设置为“已完成”。现在,让我们说API的用户偶然(或出于任何原因)将相同的任务(或任何其他已经完成的任务)发送回同一个函数。 API应该做什么?

  • 抛出异常
  • 假装我重新运行任务并告诉用户(通过事件或其他)完成/完成(再次)。
  • 什么也不做,只是忽略它。

这样的事情是否有标准或最佳做法?

1 个答案:

答案 0 :(得分:1)

假装重新运行隐藏了可能是用户错误 - 这可能导致死锁或其他逻辑错误(即 - 我创建一个事件,等待它并运行一个应该在某个时候重置它的任务 - 它永远不会发生,死锁)。如果每次成功执行任务一次调用两次,那么处理程序也可能会失败。

什么都不做或多或少相同 - 完成处理程序现在不能失败:),但它们根本没有被调用 - 如果已完成处理程序与生成线程进行必要的通信,则更有可能出现错误。

最糟糕的是 - 这些可能发生或不发生,具体取决于时间。即当用户第二次调用该函数时,任务可能仍在运行(顺便说一句,你做什么呢?)

因此,除非任务状态为“未启动”,否则抛出异常。用户可以随时检查状态并在不需要的情况下执行必要的处理。