

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 工作佇列
<a name="job-queueing"></a>

使用工作佇列時，您可以提交比同時處理更多的轉錄作業。如果沒有工作佇列，達到允許的並行請求的配額時，您必須等到一或多個請求完成後，才能提交新的請求。

對於轉錄任務和通話後分析任務請求，任務佇列是選用的。

如果您啟用任務佇列， 會 Amazon Transcribe 建立佇列，其中包含超出限制的所有請求。請求完成後，系統會立即從您的佇列中擷取新的請求並處理。已排入佇列的請求依先進先出 (FIFO) 順序處理。

您最多可新增 10,000 項工作至佇列。如果您超過此限制，您會收到 `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_tw/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 SDKs 的其他範例，包括功能特定、案例和跨服務範例，請參閱 [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` 。