簡體   English   中英

使用python + boto的Amazon SQS消息解析

[英]Amazon SQS message parsing using python + boto

我正在使用Boto庫從SQS隊列中讀取消息。 我的郵件內容如下: { Command:XXXXXXXXXXX Key:XXXXXXX Input:XXXXXX} Boto使用base64編碼發送並也讀取它,因此,如果我閱讀消息正文,則文本在那里。 但是我如何閱讀這樣的消息

Command = input['Command'] 
Key = input_message['Key'].split(',')

這樣我就可以將這些值用於進一步處理...

我對Python也很陌生

好的,您似乎具有某種格式的輸入-是否已將其標准化? 如果不是,則需要解析消息的內容並獲取各個密鑰。

在我的項目之前,我一直在使用JSON來促進平台之間的數據交換。

如果您不願意編輯傳入的數據,則需要執行以下操作(非常簡單的示例):

input = "{ Command:XXXXXXXXXXX Key:XXXXXXX Input:XXXXXX }"
data = filter(lambda x: ":" in x, input.split())
message_dict = dict()
for item in data:
    key, val = item.split(":")
    message_dict[key] = val

考慮使用老式的JSON輕松地通過導線發送和接收字典。

此測試功能驗證JSON的數據格式是否非常清晰:

test_sqs.py

import json

import boto3
from moto import mock_sqs

@mock_sqs
def test_sqs():
    sqs = boto3.resource('sqs', 'us-east-1')
    queue = sqs.create_queue(QueueName='votes')

    queue.send_message(MessageBody=json.dumps(
        {'Command': 'drink', 'Key': 'beer', 'Input': 'tasty'}))

    messages = queue.receive_messages()
    assert len(messages) == 1
    assert messages[0].body == (
        '{"Input": "tasty", "Command": "drink", "Key": "beer"}')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM