为长期任务创建REST API的最佳方法?

Kug*_*gel 10 rest api-design callback

假设我有2台服务器.

第一种是提供一些计算的服务,这些计算可以持续很长时间(几分钟到几小时).

第二台服务器将使用此服务计算一些数据.

我正在尝试为第一台服务器设计一个REST API,到目前为止一直很好.但是我希望听到一些关于如何在持久任务完成时建模通知的意见.

到目前为止我考虑了两种方法:

  1. 轮询 - 第二台服务器会不时询问结果.
  2. 回调 - 第二个服务器将为第一个服务器设置一个uri,以便在完成后调用.但这在REST API中有点含糊.

你怎么看?

Hit*_*esh 7

根据您的情况,我会选择投票.当第二台服务器发出初始请求以在第一台服务器上创建作业时,它应该获得具有最终状态页面的URL的响应.然后,第二个服务器每隔5-15分钟轮询该URL以检查作业的状态.如果第一个服务器使该URL成为RSS或Atom提要,那么用户也可以将他们的RSS阅读器指向同一个URL,并在作业完成时找出自己.当人和机器都可以从单一来源获取信息时,这是一个真正的胜利.


Bru*_*uno 4

除了我已经在这个类似问题中回答过的内容之外,我建议使用 Atom 发布协议来发送通知(您可以发布到您的第二个服务器)。