解决此问题的具体方法是使用“poller”模式来轮询活动任务。实现此解决方案的Python代码示例如下:
import boto3
import time
client = boto3.client('stepfunctions')
def poll_activity_task(activity_arn):
while True:
response = client.get_activity_task(
activityArn=activity_arn,
workerName='worker1'
)
if 'taskToken' in response:
return response['taskToken'], response['input']
time.sleep(2)
此代码包含了一个无限循环,该循环通过调用AWS SDK中的get_activity_task函数来轮询活动任务,每次休眠2秒,直到函数返回有“taskToken”的响应为止。返回的响应包含一个“taskToken”和一个“input”字段,它们可以用于执行与活动任务相关的任务。此解决方案可以显著减少任务消耗,并提高AWS步函数的性能。