Python2和Python3之间的队列

时间:2019-01-20 15:24:59

标签: python python-3.x

我有一个非常简单的队列,用于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

0 个答案:

没有答案