我正在使用API(Pragmatic Rest API或非常相似)。我想知道是否有可能发出一个API请求,该请求将返回快速响应(以JSON格式)并继续在后台处理繁重的代码。
我想可以通过使用队列系统来做到这一点,但是我不知道从哪里开始。
答案 0 :(得分:0)
您可以让您的API代理将长时间运行的事情委托给另一个进程。
您提到了队列,这是一种处理方式,您真正需要的只是一个可以执行任何长期运行任务的应用程序。
让我们想象一个可以做到这一点的简单系统。
您的API收到了执行某项操作的请求。
API不会执行此操作,而是将一条记录写到数据库中,其中包含需要完成的操作的详细信息。另一个应用程序监视该表,查看新记录,运行事物,并使用状态/结果/所需的内容更新记录。
从现在开始,对于任何请求,API都可以检查记录并返回其中的任何内容。
这是我能想到的最简单的事情。您还可以轻松地执行其他操作,与队列系统对话,发送数据,让其他人执行它。
根据您的评论,您所建议的并不是构建API的好方法。我为什么要这样说呢? 好吧,假设您收到一个请求,API启动了一个工作线程,然后将200发送回客户端。客户知道工作已经开始,如何知道该过程何时结束以及如何接收期望返回的任何数据,这很好吗?
接下来让我们再深入一点。
当1000个客户端调用一个端点并且您的API试图启动1000个工作线程时,会发生什么?您已经杀死了API,没有工作完成,也没有客户端得到任何东西。
这就是为什么我建议将工作委托给其他东西而不是API的原因。让API尽其所能,快速运行并返回结果,并将其他事情委托给其他事情。