Changeset 419

Show
Ignore:
Timestamp:
03/09/09 21:56:30 (13 months ago)
Author:
samuel
Message:

pythonapi: Workers now handle a server dieing while looking for work

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/api/python/lib/gearman/connection.py

    r400 r419  
    8888 
    8989        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    90         self.sock.settimeout( self.timeout ) 
    91         try: 
    92             self.sock.connect( self.addr ) 
     90        self.sock.settimeout(self.timeout) 
     91        try: 
     92            self.sock.connect(self.addr) 
    9393        except (socket.error, socket.timeout), e: 
    9494            self.sock = None 
     
    132132            if e.args[0] == errno.EWOULDBLOCK: 
    133133                return 
    134             raise 
    135         else: 
    136             if not data: 
    137                 self.close() 
    138                 self.is_dead = True 
    139                 raise self.ConnectionError("connection died") 
     134            if e.args[0] == errno.ECONNRESET: 
     135                data = None 
     136            else: 
     137                raise 
     138 
     139        if not data: 
     140            self.close() 
     141            self.is_dead = True 
     142            raise self.ConnectionError("connection died") 
    140143 
    141144        self.in_buffer += data