【问题标题】:Assertion error with snakemq python 3.2.1snakemq python 3.2.1的断言错误
【发布时间】:2016-02-07 18:09:02
【问题描述】:

我正在学习此处的教程: http://www.snakemq.net/doc/tutorial.html

这是我的代码:

import snakemq.link
import snakemq.packeter
import snakemq.messaging
import snakemq.message

#Build Stack

my_link = snakemq.link.Link()
my_packeter = snakemq.packeter.Packeter(my_link)
my_messaging = snakemq.messaging.Message("tyler", "", my_packeter)

#Tyler

my_link.add_listener(("", 4000))
my_link.add_connector(("localhost", 4001))

#Sally

my_link.add_connector(("localhost", 4000))
my_link.add_connector(("localhost", 4001))

#Paul

my_link.add_connector(("localhost", 4000))
my_link.add_listener(("", 4001))

#Run link loop (it drives the whole stack)

my_link.loop()

#Tyler wants to send a message to Sally
#drop after 30 seconds if the message can't be delivered

message = snakemq.message.Message(b"Hello", ttl = 600)
my_messaging.send_message("Sally", message)

#receiving callback

def on_recv(conn, ident, message):
    print(ident, message)

my_messaging.on_message_recv.add(on_recv)

我收到错误:

回溯(最近一次通话最后一次):
文件“C:/Users/Owner/Desktop/snakemq tutorial/test.py”,第 10 行,在 my_messaging = snakemq.messaging.Message("tyler", "", my_packeter)
文件 "C:\Python32\lib\site-packages\snakemq-1.2-py3.2.egg\snakem\message.py",
第 30 行,在 init 中断言 type(data) == bytes
断言错误

【问题讨论】:

    标签: python assertion


    【解决方案1】:

    看起来您正在错误地构建 Message

    根据文档http://www.snakemq.net/doc/api/messaging.html#message,构造函数是

    class snakemq.message.Message(data, ttl=0, flags=0, uuid=None)
    

    但是在这一行中,

    my_messaging = snakemq.messaging.Message("tyler", "", my_packeter)
    

    您传递的 "tyler"""my_packeter 与函数定义不匹配。

    你应该试试这个

    my_messaging = snakemq.messaging.Message(b"tyler")
    

    【讨论】:

    • 我做了建议的更改 Anthony,现在我收到了这个错误:'''Traceback(最近一次调用最后一次):文件“C:\Users\Owner\Desktop\snakemq tutorial\test.py” ,第 20 行,在 my_link.add_connector(("localhost", 4001)) 文件“C:\Python32\lib\site-packages\snakemq-1.2-py3.2.egg\snakemq\link.py”中,第 297 行,在 add_connector raise ValueError("connector '%r' already set", address) ValueError: ("connector '%r' already set", ('127.0.0.1', 4001))'''
    • 如果我的回答解决了你的问题,你应该接受这个答案。新的异常与原来的问题完全不同。您应该发布一个新问题。
    猜你喜欢
    • 2014-06-03
    • 2015-02-02
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多