

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

# 作业队列
<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>

此示例使用 [start\_transcription\_](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/transcribe.html#TranscribeService.Client.start_transcription_job) job 方法的`AllowDeferredExecution`参数启用作业队列。 适用于 Python (Boto3) 的 AWS SDK 请注意，如果您在请求中包含 `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 软件开发工具包的其他示例，包括特定功能、场景和跨服务示例，请参阅本章。[使用 Amazon Transcribe 的代码示例 AWS 软件开发工具包](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`。