gpt4 book ai didi

Azure 批处理服务在作业完成时添加 Webhook

转载 作者:行者123 更新时间:2023-12-03 05:22:43 24 4
gpt4 key购买 nike

我已经使用 ffmpeg 设置了媒体文件编码的批处理服务。每个作业可以包含多个任务,每个任务将编码一个文件。我使用任务特定的资源和输出文件系统,因此批处理服务会自动从 Blob 存储中获取文件并将文件传送到 Blob 存储。

但是:我如何知道作业或任务已完成或失败?由于该作业可能需要很长时间 - 在低优先级节点上更是如此 - 我需要某种 Webhook 或事件。对工作状态进行连续轮询是不可行的。

我能想到的选项:

  1. 运行ffmpeg命令后,连接curl命令。比如:

"commandLine" : "/bin/bash -c "ffmpeg -i inputFile outputFile &&curl https://my-webhook-receiver.org ""

从技术上讲,它是有效的,但我担心时机。在批处理服务将结果文件推送回 Blob 存储之前,curl 请求可能(?)完成。如果它是一个大文件,并且上传可能需要半分钟,我会在文件存在于输出容器上之前收到通知。

  • 使用 Blob 存储事件系统。这样做的优点是结果文件显然一定已经到达。然而,如果工作失败了怎么办?它将永远不会被触发...

  • 批量警报系统。您显然可以为某些批量事件(例如任务完成)创建警报,并且可以将其连接到操作组,最后连接到网络钩子(Hook)。这是正确的选择吗?感觉有点老套,不是使用这个系统的正确方法。

  • 有没有办法将 azure 批处理与例如连接直接使用 azure 事件网格?让我的服务器知道编码文件已准备就绪的“正确”方法是什么?

    最佳答案

    有几种方法可以处理这个问题,尽管不可否认其中一些解决方案不是很优雅:

    1. 创建 task dependency在每项任务上。依赖任务是调用 Webhook 的任务。您可以使依赖任务被调用,即使它所依赖的任务因某些退出代码而失败。您还可以创建一个依赖于作业中所有任务的“合并任务”,以便在一切完成时通知您。
    2. 使用 job manager task反而。作业管理器通常用于监视工作流程的进度并生成其他任务,因此您可以查询任务完成的状态(成功或失败)并通过此任务或作业管理器生成的任务发送 Webhook 命令。
    3. 使用job release mechanisms当作业完成时运行操作。这并不能解决每个任务的通知问题,但可以用作作业完成信号。

    关于Azure 批处理服务在作业完成时添加 Webhook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70974178/

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