如何打印get_transcription_job方法的响应,但仅在完成时打印?



我有一个Lambda函数,它使用上传到s3桶的文件开始转录作业。当触发Lambda时,使用"start_transcription_job"启动作业。

然后我想打印"get_transcription_job"的输出以便查看其内容,但是它执行得太快,并且在'TranscriptionJobStatus' = IN_PROGRESS时打印响应。

我只希望它在status = completed时打印响应。我尝试在get_transcription_job方法之前使用time.sleep(5),但Lambda函数超时。

您可以使用循环来持续检查状态,并在状态为Completed或Failed时退出循环。在SDK代码示例库中有一个Boto3示例,看起来与您可以尝试的类似:

max_tries = 60
while max_tries > 0:
max_tries -= 1
job = transcribe_client.get_transcription_job(TranscriptionJobName=job_name)
job_status = job['TranscriptionJob']['TranscriptionJobStatus']
if job_status in ['COMPLETED', 'FAILED']:
print(f"Job {job_name} is {job_status}.")
if job_status == 'COMPLETED':
print(
f"Download the transcript fromn"
f"t{job['TranscriptionJob']['Transcript']['TranscriptFileUri']}.")
break
else:
print(f"Waiting for {job_name}. Current status is {job_status}.")
time.sleep(10)

最新更新