这个问题可能源于多种原因,以下是一些可能的
确保您使用正确的队列名称和URL,AWS Sqs worker不会处理未定义或错误的队列。
确保您已正确配置队列属性,例如“VisibilityTimeout”属性。如果这个值过长,AWS Sqs worker可能仍在等待可见性状态,导致无法调用端点。
确保您的AWS Sqs worker应用程序已正确部署和运行。可以使用以下代码确认:
from config import app # app为您的Flask应用程序
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True) # 填上您的主机IP
确保您的AWS Sqs worker应用程序能够接收消息。AWS Sqs worker使用“visibilityTimeout”属性控制消息的状态,如果您的应用程序不处理这些消息,它们可能会一直处于可见性状态,从而无法被调用。
检查您的AWS Sqs worker应用程序是否已正确订阅队列。可以使用以下代码确认:
import boto3
queue_url = 'YOUR_QUEUE_URL'
queue_arn = 'YOUR_QUEUE_ARN'
sqs = boto3.client('sqs')
sqs.subscribe(
QueueUrl=queue_url,
Protocol='https',
Endpoint='YOUR_WORKER_ENDPOINT',
Attributes={
'FilterPolicy': '{"event_type": ["UPDATE", "ADD"]}'
},
ReturnSubscriptionArn=True
)
sqs.set_queue_attributes(
QueueUrl=queue_url,
Attributes={
'Policy': json.dumps({
'Id': '{}_event_policy'.format(queue_arn),
'Version': '2012-10-17',
'Statement': [
{
'Sid': '{}_event_allow'.format(queue_arn),
'Effect': 'Allow',
'Principal': '*',
'Action': 'sqs:SendMessage',
'Resource': queue_arn,
'Condition': {
'ArnEquals': {
'aws:SourceArn': 'YOUR_EVENT_SOURCE_ARN'
}
}
}
]
})
}
)
这段代码将订阅消息和设置队列属性,确保AWS Sqs worker应用程序已正确订阅队列。
下一篇:AWSSQS消息获取延迟