我有一个非常简单的队列,用于Raspberry Pi中的Python3模块之间。我想将消息从一个Python2模块发送到同一队列。不起作用。
服务器在Python3中运行,如下例所示:
from multiprocessing.managers import BaseManager
import Queue
queue = Queue.Queue()
class QueueManager(BaseManager): pass
QueueManager.register('get_queue', callable=lambda:queue)
m = QueueManager(address=('', 50000), authkey='abracadabra')
s = m.get_server()
s.serve_forever()
发件人是这样的:
from multiprocessing.managers import BaseManager
class QueueManager(BaseManager): pass
QueueManager.register('get_queue')
m = QueueManager(address=('foo.bar.org', 50000), authkey='abracadabra')
m.connect()
queue = m.get_queue()
queue.put('hello')
仅在Python3或Python2中,一切都可以完美运行。如果服务器在Python3中,发件人在Python2中,则结果为以下错误:
Blockquote
回溯(最近通话最近): m.connect()中的文件“ sender_V2.py”,第22行 连接> dispatch(conn,None,'dummy')中的文件“ /usr/lib/python2.7/multiprocessing/managers.py”,第501行 文件“ /usr/lib/python2.7/multiprocessing/managers.py”,第102行,在dispatch> kind中,结果= c.recv() ValueError:不支持的泡菜协议:3