簡體   English   中英

Python Azure 隊列,出現錯誤

[英]Python Azure Queue, getting error

我正在努力解決編碼問題。 我仍在嘗試找出 Python3 編碼方案。 我正在嘗試將 Python 中的 json 對象上傳到 Azure 隊列。 我正在使用 Python3

我制作了 json 對象

response = {"UserImageId": 636667744866847370, "OutputImageName": "car-1807177_with_blue-2467336_size_1020_u38fa38.png"} 
queue_service.put_message(response_queue, json.dumps(response))

當它進入隊列時,我收到錯誤

{"imgResponse":"The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters. ","log":null,"$return":""}

所以我必須做其他事情,因為顯然我需要對我的字符串進行 base64 編碼。 所以我嘗試

queue_service.put_message(response_queue, base64.b64encode(json.dumps(response).encode('utf-8')))

我得到

TypeError: message should be of type str

來自 Azure 存儲隊列包。 如果我檢查上述語句的類型,它是字節類型(有道理)。 所以我的問題是,如何將我的 json 對象編碼為隊列服務能夠理解的內容。 我真的很希望能夠保留 _ 和 - 和 . 圖像名稱中的字符。

如果有人想使用 QueueClient 而不是 QueueService 來解決這個問題,這里對我有用:

import json
from azure.storage.queue import QueueServiceClient, QueueClient, QueueMessage, TextBase64EncodePolicy

conn_string = '[YOUR_CONNECTION_STRING_HERE]'
queue_client = QueueClient.from_connection_string(
    conn_string,
    '[QUEUE_NAME_HERE]',
    message_encode_policy=TextBase64EncodePolicy()
)
queue_client.send_message(json.dumps({'a':'b'}))

這是我在代碼中必須做的事情才能使其工作:

queue_service = QueueService(account_name=os.getenv('storageAccount'), account_key=os.getenv('storageKey'))
queue_service.encode_function = QueueMessageFormat.text_base64encode

之后,我可以放置消息:

queue_service.put_message('bbbb', message) # 'bbbb' is a queue name

暫無
暫無

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

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