[Twisted-Python] How to receive a big stream data?

Arnar Birgisson arnarbi at gmail.com
Wed Jun 27 04:21:15 EDT 2007


You're missing "self." in several places..

On 6/27/07, steven wang <steven.zdwang at gmail.com> wrote:
================================================================================================
> class MyProtocol(protocol.Protocol):
>
>          is_big_data = False
>         big_data = ''
>          big_data_size = 0
>
>      def connectionMade(self):
>             self.big_data = ''
>              self.big_data_size = 0
>             self.is_big_data = False
>                  pass
>
>     def dataReceived(self, data):
>
>          if check_head_ok(data):
should be self.check_head_ok(data)

>             # To receive the big size data
>             if self.is_big_data:
>                 return
>
>         # The big data will overflow the Twisted receive buffer size, so
> loop to receive data
>         if is_big_size_data:

self.is_big_size_data

>                 big_data += data

self.big_data

>
>                 if big_data_size == len(big_data):

self.big_data_size == len(self.big_data)

>                         # To save data to database
>                         ....
>                         pass
>
>     def connectionLost(self, reason):
>            self.big_data = ''
>           self.big_data_size = 0
>            self.is_big_data = False
>           pass
>
>     def check_head_ok(self, head):
>            if data.startswith('ABC'):
>                   values = data.split(',')
>                    self.big_data_size = int(values[1])
>                   self.is_big_data = self.big_data_size > 0
>                   return True
>           else:
>                   return False
> ================================================================================================

The check_head_ok also won't work like that. First off you need to
change head to values there - and since dataReceived is called
multiple times, you need to make sure check_head_ok is only called at
the beginning.

Arnar




More information about the Twisted-Python mailing list