作业队列 - Amazon Transcribe

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

作业队列

相比于并发处理,使用作业队列可以提交更多的转录作业请求。如果不使用作业队列,一旦达到允许的并发请求配额,则必须等到一个或多个请求完成后才能提交新请求。

对于转录作业请求,可以选择作业队列。通话后分析请求会自动启用作业队列。

如果您启用任务队列,则 Amazon Transcribe 会创建一个包含所有超出限制的请求的队列。请求完成后,系统会立即从您的队列中提取一个新请求并进行处理。排队的请求按照先进先出 (FIFO) 顺序进行处理。

您最多可以向队列添加 10000 个作业。如果超过此限制,您会收到 LimitExceededConcurrentJobException 错误。为了保持最佳性能,最多 Amazon Transcribe 只能使用配额的 90%(带宽比为 0.9)来处理排队的作业。请注意,这些是默认值,可以根据请求相应增加。

提示

您可以在《AWS 一般参考》中找到 Amazon Transcribe 资源的默认限制和配额列表。可以根据请求增加其中的一些默认值。

如果您启用了作业队列但未超过并发请求的配额,则所有请求都将并发处理。

启用作业队列

您可以使用、或启用作业队列 AWS SDKs;有关示例 AWS Management ConsoleAWS CLI,请参阅以下内容;有关示例,请参阅以下内容:

  1. 登录到 AWS Management Console

  2. 在导航窗格中,选择转录作业,然后选择创建作业(右上角)。这将打开指定作业详细信息页面。

  3. 作业设置框中,有一个其它设置面板。如果展开此面板,则可以选中添加到作业队列框来启用作业队列。

    Amazon Transcribe 控制台屏幕截图:“指定任务详细信息” 页面。
  4. 指定作业详细信息页面上填写要包含的任何其它字段,然后选择下一步。此时您将会看到配置作业 - 可选页面。

  5. 选择创建作业以运行您的转录作业。

此示例使用带有AllowDeferredExecutionjob-execution-settings参数的start-transcription-job命令和参数。请注意,如果您在请求中包含 AllowDeferredExecution,则还必须包括 DataAccessRoleArn

有关更多信息,请参阅StartTranscriptionJobJobExecutionSettings

aws transcribe start-transcription-job \ --region us-west-2 \ --transcription-job-name my-first-transcription-job \ --media MediaFileUri=s3://amzn-s3-demo-bucket/my-input-files/my-media-file.flac \ --output-bucket-name amzn-s3-demo-bucket \ --output-key my-output-files/ \ --language-code en-US \ --job-execution-settings AllowDeferredExecution=true,DataAccessRoleArn=arn:aws:iam::111122223333:role/ExampleRole

以下是另一个使用start-transcription-job命令的示例,以及允许排队的请求正文。

aws transcribe start-transcription-job \ --region us-west-2 \ --cli-input-json file://my-first-queueing-request.json

my-first-queueing-request.json 文件包含以下请求正文。

{ "TranscriptionJobName": "my-first-transcription-job", "Media": { "MediaFileUri": "s3://amzn-s3-demo-bucket/my-input-files/my-media-file.flac" }, "OutputBucketName": "amzn-s3-demo-bucket", "OutputKey": "my-output-files/", "LanguageCode": "en-US", "JobExecutionSettings": { "AllowDeferredExecution": true, "DataAccessRoleArn": "arn:aws:iam::111122223333:role/ExampleRole" } }

此示例使用 start_transcription_ job 方法的AllowDeferredExecution参数启用作业队列。 AWS SDK for Python (Boto3) 请注意,如果您在请求中包含 AllowDeferredExecution,则还必须包括 DataAccessRoleArn。有关更多信息,请参阅StartTranscriptionJobJobExecutionSettings

有关使用的其他示例 AWS SDKs,包括特定功能示例、场景示例和跨服务示例,请参阅本章。使用 Amazon Transcribe 的代码示例 AWS SDKs

from __future__ import print_function import time import boto3 transcribe = boto3.client('transcribe', 'us-west-2') job_name = "my-first-queueing-request" job_uri = "s3://amzn-s3-demo-bucket/my-input-files/my-media-file.flac" transcribe.start_transcription_job( TranscriptionJobName = job_name, Media = { 'MediaFileUri': job_uri }, OutputBucketName = 'amzn-s3-demo-bucket', OutputKey = 'my-output-files/', LanguageCode = 'en-US', JobExecutionSettings = { 'AllowDeferredExecution': True, 'DataAccessRoleArn': 'arn:aws:iam::111122223333:role/ExampleRole' } ) while True: status = transcribe.get_transcription_job(TranscriptionJobName = job_name) if status['TranscriptionJob']['TranscriptionJobStatus'] in ['COMPLETED', 'FAILED']: break print("Not ready yet...") time.sleep(5) print(status)

您可以通过 AWS Management Console 或提交GetTranscriptionJob请求来查看排队作业的进度。当作业在排队时,StatusQUEUED。当作业开始处理时,该状态会更改为 IN_PROGRESS,在处理完成后,该状态会更改为 COMPLETEDFAILED