0

boto ライブラリを使用して SQS キューからメッセージを読み取ります。私のメッセージには次のようなテキストがあります: { Command:XXXXXXXXXXX Key:XXXXXXX Input:XXXXXX}. Boto は base64 でエンコードされた状態で送信し、それを読み取るので、メッセージ本文を読むとそこにテキストが表示されます。しかし、どうすれば次のようなメッセージを読むことができますか

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

これらの値をさらに処理するために使用できるように...

私はPythonも初めてです

4

2 に答える 2

1

わかりました、あなたはある種のフォーマットで入力をしているようです-それは標準化されていますか? そうでない場合は、メッセージの内容を解析して個々のキーを取得する必要があります。

以前のプロジェクトで行っていたことは、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
于 2012-10-31T15:34:42.013 に答える
0

ネットワーク上で辞書を簡単に送受信するには、古き良き 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"}')
于 2016-08-13T20:26:24.193 に答える