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

steven wang steven.zdwang at gmail.com
Tue Jun 26 22:02:15 EDT 2007

Dear all,

I'm using the Twisted to write a socket server. I has a problem in the
socket server. I could not receive a big size data when the data size is
bigger then the connection buffersize.

The protocol description:

First, Client send data head to Server.  Head Format:
Second, Client send big data to Server, the big data is stream data.
After Server received the big data and then save it to database.

My problem source code :
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

    def dataReceived(self, data):

         if check_head_ok(data):
            # To receive the big size data
            if self.is_big_data:

        # The big data will overflow the Twisted receive buffer size, so
loop to receive data
        if is_big_size_data:
                big_data += data

                if big_data_size == len(big_data):
                        # To save data to database

    def connectionLost(self, reason):
          self.big_data = ''
          self.big_data_size = 0
          self.is_big_data = False

    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
                  return False

If you know it, Please tell me. Thank you very much! :)

Beat Regards,
Steven. Wang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20070627/8d3e9bbc/attachment.htm 

More information about the Twisted-Python mailing list