Stomp.py 使用自定义 headers 发送失败
Stomp.py send with custom headers fails
我目前正在通过 python Stomp.py 库将消息从自定义系统推送到 ActiveMQ 实例。当我提供带有自定义 headers 的字典作为发送命令中的 "headers" 参数时,这会失败。
destination = self.subscription_id.queue_name
# Connect to the server
conn.connect(username=$username,
password=$password,
headers={})
# Send the actual message out
conn.send(destination, self.body, headers=self.header)
conn.disconnect()
出于某种原因,header 无法向我提供此错误:
ValueError: dictionary update sequence element #0 has length 1; 2 is required
堆栈跟踪的最后一部分:
File "/custom_addons/activemq_message.py", line 124, in send_to_queue
conn.send(destination, self.body, headers=self.header)
File "/usr/local/lib/python2.7/dist-packages/stomp/protocol.py", line 151, in send
headers = utils.merge_headers([headers, keyword_headers])
File "/usr/local/lib/python2.7/dist-packages/stomp/utils.py", line 166, in merge_headers
headers.update(header_map)
这与我实际上在字典中提供任何内容或只是发送一个空字典无关。
它也独立于我在连接级别提供 header 或发送(或两者)。
似乎在某些时候将 header 转换为字符串,但我无法确定这是有意还是无意。我也不知道如何解决这个问题。
如有任何线索,我们将不胜感激。
找到原因,在代码的其他部分,header 存储在字符串字段中。它随后尝试发送一个 unicode 来代替字典。
因为我无法编辑源代码,所以我使用了 "ast" 模块的方法 "literal_eval" 将 unicode 转换为字典并且它有效。
我目前正在通过 python Stomp.py 库将消息从自定义系统推送到 ActiveMQ 实例。当我提供带有自定义 headers 的字典作为发送命令中的 "headers" 参数时,这会失败。
destination = self.subscription_id.queue_name
# Connect to the server
conn.connect(username=$username,
password=$password,
headers={})
# Send the actual message out
conn.send(destination, self.body, headers=self.header)
conn.disconnect()
出于某种原因,header 无法向我提供此错误:
ValueError: dictionary update sequence element #0 has length 1; 2 is required
堆栈跟踪的最后一部分:
File "/custom_addons/activemq_message.py", line 124, in send_to_queue
conn.send(destination, self.body, headers=self.header)
File "/usr/local/lib/python2.7/dist-packages/stomp/protocol.py", line 151, in send
headers = utils.merge_headers([headers, keyword_headers])
File "/usr/local/lib/python2.7/dist-packages/stomp/utils.py", line 166, in merge_headers
headers.update(header_map)
这与我实际上在字典中提供任何内容或只是发送一个空字典无关。
它也独立于我在连接级别提供 header 或发送(或两者)。
似乎在某些时候将 header 转换为字符串,但我无法确定这是有意还是无意。我也不知道如何解决这个问题。
如有任何线索,我们将不胜感激。
找到原因,在代码的其他部分,header 存储在字符串字段中。它随后尝试发送一个 unicode 来代替字典。
因为我无法编辑源代码,所以我使用了 "ast" 模块的方法 "literal_eval" 将 unicode 转换为字典并且它有效。