假设我有2台服务器。
第一种是提供一些计算的服务,可以持续很长时间(几分钟到几小时)。
第二台服务器将使用此服务计算一些数据。
我正在尝试为第一台服务器设计一个REST API,到目前为止一直很好。但是我希望听到一些关于如何在长期任务完成时建模通知的意见。
到目前为止,我考虑了两种方法:
您怎么看?
答案 0 :(得分:7)
根据您的情况,我会选择投票。当第二台服务器发出初始请求以在第一台服务器上创建作业时,它应该获得具有最终状态页面的URL的响应。然后,第二个服务器每隔5-15分钟轮询该URL以检查作业的状态。如果第一个服务器使该URL成为RSS或Atom提要,那么用户也可以将他们的RSS阅读器指向相同的URL,并在作业完成时找出自己。当人和机器都可以从单一来源获取信息时,这是一个真正的胜利。
答案 1 :(得分:4)
除already answered中我this similar question之外,我建议使用Atom发布协议进行通知(您可以发布到第二台服务器)。
答案 2 :(得分:1)
如果您使用Python,您可以利用RabbitMQ和Celery来完成这项工作。 Celery允许您在队列中创建一个项目,然后暂停执行您正在运行它的任何内容(即:Django),以便您可以使用队列处理器的输出。无需轮询或回调。