我的json文件如下:
identifier
我使用以下boto代码将其上传到Amazon SQS
{
"id": 1,
"name": "A green door",
"price": 12.50,
"tags": ["home", "green"]
}
此代码工作正常,但是当我在浏览器上通过AWS控制台检查我的SQS队列时,我看到 4条消息而不是包含此json文件的一条消息..
当我尝试通过boto代码阅读相同内容时,我最终收到以下内容:
import json
import uuid
import time
import boto.sqs
import boto
import glob
from boto.sqs.connection import SQSConnection
from boto.sqs.message import Message
from boto.sqs.message import RawMessage
def process_file(json_file):
sqs = boto.sqs.connect_to_region("ap-southeast-1")
queue = sqs.get_queue("Killswitch")
with open(json_file) as json_fileone:
dataone=json.load(json_fileone)
print dataone
[queue.write(queue.new_message(i)) for i in dataone]
print "File sent successfully to queue"
json_files = glob.glob("*json")
for json_file in json_files:
process_file(json_file)
我需要在一条消息中上传整个文件,而不是4个对象/ 消息。
答案 0 :(得分:2)
这是因为在这一行:
PeopleList.setPersonID(list);
[queue.write(queue.new_message(i)) for i in dataone]
表示您正在迭代json对象的键
你正在有效地做
for i in dataone
显然API只接受字符串,您可以尝试:
queue.write(queue.new_message('id'))
queue.write(queue.new_message('name'))
queue.write(queue.new_message('price'))
queue.write(queue.new_message('tags'))