

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

# 工作佇列
<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\_transcription\_job](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 的其他範例，包括功能特定、案例和跨服務範例，請參閱 [使用 AWS SDKs 的 Amazon Transcribe 程式碼範例](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` 。