首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用自定义标头发送Stomp.py失败

使用自定义标头发送Stomp.py失败
EN

Stack Overflow用户
提问于 2017-02-13 22:28:05
回答 1查看 795关注 0票数 0

我目前正在通过python Stomp.py库将消息从自定义系统推送到ActiveMQ实例。当我在send命令中提供一个带有自定义报头的字典作为" headers“参数时,这会失败。

代码语言:javascript
复制
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()

由于某些原因,标头无法向我提供以下错误:

代码语言:javascript
复制
ValueError: dictionary update sequence element #0 has length 1; 2 is required

堆栈跟踪的最后一部分:

代码语言:javascript
复制
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)

不管我是否在字典中实际提供了任何东西,或者只是发送了一个空的。

它也独立于我在连接层或发送(或两者)提供报头。

它似乎在某一时刻将头文件转换为字符串,但我不知道这是否是故意的。我也找不到解决这个问题的方法。

任何线索都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-13 23:14:06

找到了原因,在代码的其他部分中,标头存储在字符串字段中。它随后会尝试发送一个unicode来代替字典。

因为我不能编辑源代码,所以我使用"ast“模块的方法"literal_eval”将unicode转换成字典,并且它可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42206449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档