我做了2个应用程序: 客户端从sql server(10k行)提取数据,并通过套接字将每一行pickle发送到“收集器”服务器。 服务器使用扭曲(这是强制性的)并接收每一行,解开它并将数据存储在另一个sql服务器中。泡菜是否与扭曲不兼容?
每次我做起,从客户端发送数据到服务器,在第200行(每次不同的线路)服务器抛出异常: 有时是这样的:
Traceback (most recent call last):
File "collector2.py", line 81, in dataReceived
self.count,account = pickle.loads(data)
File "/usr/lib/python2.6/pickle.py", line 1374, in loads
return Unpickler(file).load()
File "/usr/lib/python2.6/pickle.py", line 858, in load
dispatch[key](self)
File "/usr/lib/python2.6/pickle.py", line 1138, in load_pop
del self.stack[-1]
IndexError: list assignment index out of range
,但它不是每时间一样。打印我的例外,我红: 例外:从空列表 异常弹出:列表索引超出范围 例外的:“'” 异常:列表分配索引超出范围
另一个奇怪的错误是: 文件“/ USR /lib/python2.6/pickle.py”,线路1124,在find_class 进口(模块) exceptions.ImportError:没有
for i in listaSAI:
crm={}
try:
crm['uid']=i[0]
except:
crm['uid']=None
try:
crm['type_cond']=i[01]
except:
crm['type_cond']=None
try:
crm['population_id']=i[2]
except:
crm['population_id']=None
try:
crm['product_id']=i[3]
except:
crm['product_id']=None
try:
crm['a_id']=i[4]
except:
crm['a_id']=None
try:
crm['status']=i[5]
except:
crm['status']=None
#time.sleep(0.001)
serialized = pickle.dumps((count,crm))
#print "sent num", count, crm
s.sendall(serialized)
count += 1
模块名为OND”我的服务器:
def dataReceived(self, data):
try:
self.count,account = pickle.loads(data)
except Exception as e:
print "Eccezione:", e
print self.count+1
print "DISAGIO", data
print traceback.print_exc()
在我的客户端打印数据告诉我一切正常。 如果我试图减慢使用time.sleep(0.01)在我的客户端发送的过程,一切都很好,并且不会引发异常。
我能做些什么来调试我的代码?
p.s. 我怀疑exceptions.ImportError:没有名为ond的模块引用crm中的“type_cond”键。