

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

# 作业队列
<a name="job-queueing"></a>

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

对于转录作业请求和通话后分析作业请求，作业排队均为可选功能。

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

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

**提示**  
您可以在 [AWS 一般参考](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)中找到 Amazon Transcribe 资源的默认限制和配额列表。可以根据请求增加其中的一些默认值。

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

## 启用作业队列
<a name="job-queueing-how"></a>

您可以使用 **AWS 管理控制台**、**AWS CLI** 或 **AWS SDK** 启用作业队列；有关示例，请参阅以下内容：

### AWS 管理控制台
<a name="queueing-console-batch"></a>

1. 登录到 [AWS 管理控制台](https://console.aws.amazon.com/transcribe/)。

1. 在导航窗格中，选择**转录作业**，然后选择**创建作业**（右上角）。这将打开**指定作业详细信息**页面。

1. 在**作业设置**框中，有一个**其它设置**面板。如果展开此面板，则可以选中**添加到作业队列**框来启用作业队列。  
![\[Amazon Transcribe 控制台屏幕截图：“指定作业详细信息”页面。\]](http://docs.aws.amazon.com/zh_cn/transcribe/latest/dg/images/jobqueueing.png)

1. 在**指定作业详细信息**页面上填写要包含的任何其它字段，然后选择**下一步**。此时您将会看到**配置作业 - *可选***页面。

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

### AWS CLI
<a name="queueing-cli"></a>

此示例使用 [start-transcription-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/transcribe/start-transcription-job.html) 命令和 `job-execution-settings` 参数及 `AllowDeferredExecution` 子参数。请注意，如果您在请求中包含 `AllowDeferredExecution`，则还必须包括 `DataAccessRoleArn`。

有关更多信息，请参阅 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartTranscriptionJob.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartTranscriptionJob.html) 和 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_JobExecutionSettings.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_JobExecutionSettings.html)。

```
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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/transcribe/start-transcription-job.html) 命令的示例，以及一个启用队列的请求正文。

```
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"
  }
}
```

### 适用于 Python (Boto3) 的 AWS SDK
<a name="queueing-python-batch"></a>

此示例使用 适用于 Python (Boto3) 的 AWS SDK 通过 [start\$1transcription\$1job](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/transcribe.html#TranscribeService.Client.start_transcription_job) 方法的 `AllowDeferredExecution` 参数来启用作业队列。请注意，如果您在请求中包含 `AllowDeferredExecution`，则还必须包括 `DataAccessRoleArn`。有关更多信息，请参阅 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartTranscriptionJob.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartTranscriptionJob.html) 和 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_JobExecutionSettings.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_JobExecutionSettings.html)。

有关使用 AWS SDK 的其它示例，包括特定特征、场景和跨服务示例，请参阅[使用 Amazon Transcribe 的代码示例 AWS SDKs](service_code_examples.md)一章。

```
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 管理控制台 或提交 [https://docs.aws.amazon.com/transcribe/latest/APIReference/API_GetTranscriptionJob.html](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_GetTranscriptionJob.html) 请求来查看排队作业的进度。当作业在排队时，`Status` 为 `QUEUED`。当作业开始处理时，该状态会更改为 `IN_PROGRESS`，在处理完成后，该状态会更改为 `COMPLETED` 或 `FAILED`。