pickleを使用してクラスのインスタンスをエンコードし、ソケットを介して送信し、もう一方の端にデコードしますend AttributeError: 'module' object has no attribute ''
は、pickle.loads()を呼び出すときにスローされます。周りグーグルで後私はピクルスが正しく、それはパケットAttributeError:ソケット上のpickleを使用するときに 'module'オブジェクトに属性がありません
def run(self):
while self.alive.isSet():
try:
cmd = self.cmd_q.get(True, 0.1)
self.log.debug('Q Returned')
self.handlers[cmd.type](cmd)
except Queue.Empty as e:
#self.log.debug('Q Returned Empty')
pass
if self.connected.isSet():
self.log.debug('checking packets')
if self.conn:
x = select.select((self.conn,),(),(), 0.1)
self.log.debug('SERVER returned')
else:
x = select.select((self.sock,),(),(), 0.1)
self.log.debug('CLIENT returned')
if len(x[0]) != 0:
self.log.debug('Got Packet')
packet = x[0][0].makefile('rwb').readline()
self.__reply_receive(packet)
を受信するための名前に
機能を持っていない属性を探している理由definition.Iを把握することはできませんクラスを含むモジュールをインポートしている確認しました
def __handle_send(self, cmd):
self.log.debug('Sending.....')
if self.connected.isSet():
packet = pickle.dumps(cmd.data,pickle.HIGHEST_PROTOCOL)
if self.conn:
self.conn.send(packet + '\n')
else:
self.sock.send(packet + '\n')
self.log.debug('Sent!')
を送信する機能と、クラス定義
class Packet(object):
"""
LINEUP (line)
UPDATE (dict)
INPUT (line)
DISCONN None
TEST (line)
"""
LINEUP, UPDATE, INPUT, DISCONN, TEST = range(5)
def __init__(self, type, data = 'blarg'):
self.type = type
self.data = data
ダンプされた文字列を 'print'しようとしましたが、同じ側に手動で再度ロードしましたか?反対側に? – katrielalex