Python 将JSON文件上载到Amazon SQS时出错
我有下面的代码,它基本上尝试将.json文件写入SQSPython 将JSON文件上载到Amazon SQS时出错,python,amazon-web-services,boto,amazon-sqs,Python,Amazon Web Services,Boto,Amazon Sqs,我有下面的代码,它基本上尝试将.json文件写入SQS import json import uuid import time 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.sqs.connect_to_region("
import json
import uuid
import time
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.sqs.connect_to_region("ap-southeast-1")
queue = sqs.get_queue("Demon")
json_fileone=open('emp.json') ## this is only one JSON file
dataone=json.load(json_fileone)
print dataone
[queue.write(queue.new_message(i)) for i in dataone]
print "File sent successfully to queue"
这将上载所需的emp.json文件,我需要做的是在文件数量上运行一个循环,因为我有emp1.json、emp2.json、emp3.json、emp4.json到SQS,默认情况下,BOTO在发送之前执行BASE64编码。。。我需要以相同的格式发送这些文件,即“.json”根据您的问题和我们的评论,您需要使用 因此,将您的进程移动到函数
进程\u文件
。同时使用和
语句来处理文件
def process_file(json_file):
sqs = boto.sqs.connect_to_region("ap-southeast-1")
queue = sqs.get_queue("Demon")
with open('emp.json') as json_fileone:
dataone=json.load(json_fileone)
.....
根据您的问题和我们的意见,您需要使用 因此,将您的进程移动到函数
进程\u文件
。同时使用和
语句来处理文件
def process_file(json_file):
sqs = boto.sqs.connect_to_region("ap-southeast-1")
queue = sqs.get_queue("Demon")
with open('emp.json') as json_fileone:
dataone=json.load(json_fileone)
.....
在[dataone]中为i尝试
[queue.write(queue.new_message(i))
可能[queue.write(queue.new_message(i))在dataone中为i尝试[queue.write(queue.new_message(i)]
是的。。。[queue.write(queue.new_message(i))for i in dataone]这可以工作。。。但若我有n个json文件要发送到队列呢?你们的数据格式是什么??我说的只是胡乱猜测。正确的代码取决于您的数据。我想上传的文件是5个json文件,我需要将它们上传到SQS,但默认情况下,boto会在发送base 64之前对它们进行编码。。我不想。。。所以我需要做两件事:1。上载大量文件{我猜在插入for循环之前需要进行lil修改}2。这些.json文件应该是RawMessages()…更新您的问题,而不是注释。请尝试在[dataone]中为i使用[queue.write(queue.new_message(i)]
可能在[dataone]中为i使用[queue.write(queue.new_message(i)]
是的。。。[queue.write(queue.new_message(i))for i in dataone]这可以工作。。。但若我有n个json文件要发送到队列呢?你们的数据格式是什么??我说的只是胡乱猜测。正确的代码取决于您的数据。我想上传的文件是5个json文件,我需要将它们上传到SQS,但默认情况下,boto会在发送base 64之前对它们进行编码。。我不想。。。所以我需要做两件事:1。上载大量文件{我猜在插入for循环之前需要进行lil修改}2。这些.json文件应该是RawMessages()…更新您的问题,而不是注释。是。。它起作用了。。还有一个问题。。。这将上载json文件并将其作为单个对象存储在SQS中。。这实际上是队列的期望行为吗?嗯,我对SQS知之甚少,也许你应该阅读官方文档,或者四处搜索错误。是的。。它起作用了。。还有一个问题。。。这将上载json文件并将其作为单个对象存储在SQS中。。这实际上是队列的期望行为吗?嗯,我对SQS知之甚少,也许你应该阅读官方文档,或者四处搜索错误。