[Twisted-Python] is twisted compatible with pickle?
Laurens Van Houtven
_ at lvh.cc
Fri Mar 29 05:57:22 MDT 2013
While everything the people above me have said is correct, I would suggest
AMP as an alternative. It would allow you to send most basic Python data
types in your messages.
On Mar 29, 2013 2:32 AM, "succer110 at tiscali.it" <succer110 at tiscali.it>
wrote:
> I have made 2 application:
> The client extract data from a sql server (10k lines), and send every line
> pickled to a "collector" server via socket.
> The server uses twisted and receive every line, unpikle it and store the
> data in another sql server.
>
> Everytime i start sending data from client to server, in the first 200
> line (everytime a different line) **the server** throws an exception:
> SOMETIMES it something like:
>
> 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
>
> But it's NOT every time the same. Printing my exception i red:
> Exception: pop from empty list
> Exception: list index out of range
> Exception: "'"
> Exception: list assignment index out of range
>
> Another strange errors is:
> File "/usr/lib/python2.6/pickle.py", line 1124, in find_class
> __import__(module)
> exceptions.ImportError: No module named ond'
>
> 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
>
>
> And my server:
>
> def dataReceived(self, data):
> try:
> self.count,account = pickle.loads(data)
> except Exception as e:
> print "Eccezione:", e
> print self.count+1
> print data
> print traceback.print_exc()
>
>
>
> Printing the data in my client tells me that everything it's ok.
> *If i try to slow down the process of sending using time.sleep(0.01) in my
> client, EVERYTHING IS FINE, and no exception are raised.*
>
> What can i do to debug my code?
>
> p.s.
> I suspect that exceptions.ImportError: No module named ond' refers to
> "type_cond" key in crm.
>
>
> Invita i tuoi amici e Tiscali ti premia! Il consiglio di un amico vale più
> di uno spot in TV. Per ogni nuovo abbonato 30 € di premio per te e per lui!
> Un amico al mese e parli e navighi sempre gratis:
> http://freelosophy.tiscali.it/
>
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/twisted-python/attachments/20130329/e88883f7/attachment.html>
More information about the Twisted-Python
mailing list