无法使用Python BOTO将相同语法的json文件上传到Amazon SQS

时间:2015-09-16 04:50:23

标签: python json amazon-sqs

我的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个对象/ 消息

1 个答案:

答案 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'))