gpt4 book ai didi

opencpu - OpenCPU 中长时间运行作业的任务模型?

转载 作者:行者123 更新时间:2023-12-05 05:26:30 28 4
gpt4 key购买 nike

据我所知,OpenCPU 中没有任务模型,也就是说,一个开放的 TCP 连接必须等待任意长的时间,直到请求完成。

任务模型实现的一种可能性是在希望运行函数时立即为 POST 请求返回状态为 200 OK 的专用任务 uri。优点是当作业在后台服务器上运行时,客户端会立即得到结果。

然后客户端将轮询任务 URI,直到它返回 201 created,这意味着作业已成功完成,或者返回调用不成功的错误代码。在成功的情况下,正文将包含与 POST 现在直接创建的资源列表相同的资源列表。

对该模型或类似方法有何看法?大家是怎么处理的?我认为在没有打开 TCP 连接的情况下支持长时间运行的作业将很有值(value)。我还想到了可选功能,例如在轮询仍在运行的作业时提供进度信息等。

最佳答案

你是正确的,当前版本的 OpenCPU 不包含任务管理器。客户端必须在等待请求完成时保持连接处于事件状态。对于大多数用例,这使 API 保持良好和简单,但对于调度长时间运行的作业来说并不是最佳选择。但是,所有时间限制都是可配置的,因此没有什么可以阻止您等待 30 分钟来完成您的工作。

正如您所建议的,另一种设计是为有效的 POST 请求返回 Accepted 202,然后让客户端轮询结果的状态。这将是对 API 的一个很酷的补充(也许有一天会被添加),但它在客户端和服务器实现中引入了相当多的复杂性。

在服务器上,您需要编写一个任务管理器,并且可能担心监控、超时和手动终止长时间运行的请求的功能。此外,当函数仍在执行时,R 无法提供太多信息。例如,真的没有办法知道函数调用离完成还有多远。

可能的一件事是捕获中间标准输出,这样您就可以通过定期打印一些状态在 R 函数中实现您自己的进度指示器。然后客户端可以重复检索一些 URL 来读取标准输出并查询请求的状态。但是我怀疑这会有多大用处。我很少在 R 函数中看到进度表(除非 debug=TRUE 或其他),所以我不确定这对于远程调用的 R 函数会有什么不同。

关于opencpu - OpenCPU 中长时间运行作业的任务模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25544546/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com