从异步 API 获取结果
Obtaining result from async API
我正在构建 API 以使用 Lumen 进行处理,每个请求的处理作业大约需要 1-3 秒。
到目前为止,我是使用作业队列和 beanstalkd 完成的,它是异步的,这意味着我 return job_id 我可以稍后检查结果。
我也在编写 PHP 客户端来利用 API,为此我想知道我是否应该在服务器端或客户端包含 'wait' 参数?如果等待在服务器端实现,我将需要休眠并在分派作业后检查数据库的结果,然后 return 结果可用时(在接下来的 1-5 秒内直到可用),或者如果是客户端,我将如果工作完成并获得结果,需要通过特定路线睡觉并检查 job_id。
哪个选项更好?
我会有一个端点,它唯一的工作就是检查作业 ID 并等待。没有选择在其他端点上等待结果,因为它会破坏异步性,消费者会一直等待,因为它更容易。
好的,客户端将发送作业并取回作业 ID。
然后您将该作业 ID 发送到等待端点,该端点将 wait/hang 直到作业完成或失败。然后你可以再次查询作业并得到结果。
这将避免需要轮询服务器,也可以防止客户端因需要睡眠、轮询、睡眠而阻塞。
Abit like LXD 操作端点:https://github.com/lxc/lxd/blob/master/doc/rest-api.md#10operationsuuidwait
我正在构建 API 以使用 Lumen 进行处理,每个请求的处理作业大约需要 1-3 秒。
到目前为止,我是使用作业队列和 beanstalkd 完成的,它是异步的,这意味着我 return job_id 我可以稍后检查结果。
我也在编写 PHP 客户端来利用 API,为此我想知道我是否应该在服务器端或客户端包含 'wait' 参数?如果等待在服务器端实现,我将需要休眠并在分派作业后检查数据库的结果,然后 return 结果可用时(在接下来的 1-5 秒内直到可用),或者如果是客户端,我将如果工作完成并获得结果,需要通过特定路线睡觉并检查 job_id。
哪个选项更好?
我会有一个端点,它唯一的工作就是检查作业 ID 并等待。没有选择在其他端点上等待结果,因为它会破坏异步性,消费者会一直等待,因为它更容易。
好的,客户端将发送作业并取回作业 ID。
然后您将该作业 ID 发送到等待端点,该端点将 wait/hang 直到作业完成或失败。然后你可以再次查询作业并得到结果。
这将避免需要轮询服务器,也可以防止客户端因需要睡眠、轮询、睡眠而阻塞。
Abit like LXD 操作端点:https://github.com/lxc/lxd/blob/master/doc/rest-api.md#10operationsuuidwait