【发布时间】:2018-06-04 16:03:51
【问题描述】:
我的python代码如下:
import json
import boto.sqs
import boto
from boto.sqs.connection import SQSConnection
from boto.sqs.message import Message
from boto.sqs.message import RawMessage
sqs = boto.connect_sqs(aws_access_key_id='XXXXXXXXXXXXXXX',aws_secret_access_key='XXXXXXXXXXXXXXXXX')
q = sqs.create_queue("Nishantqueue") // Already present
q.set_message_class(RawMessage)
results = q.get_messages()
ret = "Got %s result(s) this time.\n\n" % len(results)
for result in results:
msg = json.loads(result.get_body())
ret += "Message: %s\n" % msg['message']
ret += "\n... done."
print ret
我的 SQS 队列包含至少 5 到 6 条消息...当我执行此操作时...我得到输出,并且每次运行时都会出现此输出,此代码无法从队列中提取 mssgs:
Got 0 result(s) this time.
...done.
我确定我在循环中遗漏了一些东西....虽然找不到
【问题讨论】:
-
你怎么知道队列包含5-6条消息?您是否通过其他工具确认了这一点?
-
AWS GUI,我手动以及通过 boto 插入它们
-
您确定您在上述代码中使用的区域与 AWS 控制台中的区域相同吗?因为您实际上是在调用
create_queue,所以此代码只会在您运行它的任何区域中创建一个新的空队列。 -
是的,并且 create_queue 方法在我指定 visibility_timeout 属性之前不会创建新队列
-
这是不正确的。
visibility_timeout参数到create_queue是可选的。如果您仅使用队列名称调用它,如果队列不存在,它将创建队列。
标签: amazon-web-services boto amazon-sqs