在 AWS IoT 中,可以使用“连续作业”功能自动执行设备端任务。但是,当设备在执行作业时,AWS IoT 不会将新的作业插入队列,而是将其放在队列末尾,直到当前作业完成。这意味着连续作业按照相反的顺序排队。以下是一个示例解决方法,可以在设备端使用 AWS IoT SDK(Python)将新作业插入到队列开头:
import boto3
import json
import time
# 设置 AWS IoT 客户端
iot = boto3.client('iot-data')
# 定义要执行的作业名称
job_name = "my_job"
# 准备要发送到队列的数据
payload = json.dumps({'message': 'hello world!'})
# 在队列开头插入新的作业
iot.start_next_pending_job_execution(jobName=job_name, statusDetails={'InProgress': {'message': 'Starting job...'}}, includeJobDocument=False, stepTimeoutInMinutes=60, payload=payload,
thingName='my_device')
在以上示例中,我们使用了start_next_pending_job_execution()
函数,这个函数可以将新的作业插入到队列开头。在此函数中,我们指定了要执行的作业名称、作业执行时的状态详情、最长执行时间、要传递到作业文档的数据等参数。通过这种方式,我们可以正确地将新的作业插入到队列开头,以便按照正常顺序执行。