如何每 n 秒检查一次列表中的作业状态,直到所有作业完成?
How to check status for jobs in list each n seconds till all jobs finished?
我在开始另一个步骤之前检查所有转录作业的状态时遇到问题。我需要知道 myList
中的所有作业何时都是 COMPLTETED
或 FAILED
,如果它是错误的,请在 5 秒后重试,但目前它永远保持 运行,这是我的python 脚本:
while True:
final_list = []
for job in myList:
status = transcribe.get_transcription_job(TranscriptionJobName=job)
final_list.append(status.get('TranscriptionJob').get('TranscriptionJobStatus'))
if all(status in final_list for status in ['COMPLETED', 'FAILED']):
break
time.sleep(5)
编辑 1
可能的响应状态可以是 QUEUED
、IN_PROGRESS
、FAILED
、COMPLETED
编辑 2
Omar 是对的,我没有正确提取每个作业响应的状态,但脚本仍然 运行 永远。
get_transcription_job方法的响应语法是:
{
'TranscriptionJob': {
'TranscriptionJobName': 'string',
'TranscriptionJobStatus': 'QUEUED'|'IN_PROGRESS'|'FAILED'|'COMPLETED',
...
}
}
因此,无需添加包含其他字段的 'status' 对象,您需要附加 status.get('TranscriptionJob').get('TranscriptionJobStatus')
变化:
final_list.append(status)
作者:
final_list.append(status.get('TranscriptionJob').get('TranscriptionJobStatus'))
更新:
根据你要做什么,条件应该是:
if all(status in ['COMPLETED', 'FAILED'] for status in final_list):
因为您需要验证允许值列表 ('COMPLETED'、'FAILED') 是否包含 'final_list'.
的所有元素
参考:
我在开始另一个步骤之前检查所有转录作业的状态时遇到问题。我需要知道 myList
中的所有作业何时都是 COMPLTETED
或 FAILED
,如果它是错误的,请在 5 秒后重试,但目前它永远保持 运行,这是我的python 脚本:
while True:
final_list = []
for job in myList:
status = transcribe.get_transcription_job(TranscriptionJobName=job)
final_list.append(status.get('TranscriptionJob').get('TranscriptionJobStatus'))
if all(status in final_list for status in ['COMPLETED', 'FAILED']):
break
time.sleep(5)
编辑 1
可能的响应状态可以是 QUEUED
、IN_PROGRESS
、FAILED
、COMPLETED
编辑 2 Omar 是对的,我没有正确提取每个作业响应的状态,但脚本仍然 运行 永远。
get_transcription_job方法的响应语法是:
{
'TranscriptionJob': {
'TranscriptionJobName': 'string',
'TranscriptionJobStatus': 'QUEUED'|'IN_PROGRESS'|'FAILED'|'COMPLETED',
...
}
}
因此,无需添加包含其他字段的 'status' 对象,您需要附加 status.get('TranscriptionJob').get('TranscriptionJobStatus')
变化:
final_list.append(status)
作者:
final_list.append(status.get('TranscriptionJob').get('TranscriptionJobStatus'))
更新:
根据你要做什么,条件应该是:
if all(status in ['COMPLETED', 'FAILED'] for status in final_list):
因为您需要验证允许值列表 ('COMPLETED'、'FAILED') 是否包含 'final_list'.
的所有元素参考: