Changeset 1498 for pykota/trunk/bin

Show
Ignore:
Timestamp:
05/25/04 10:31:16 (21 years ago)
Author:
jalet
Message:

Heavy CPU usage seems to be fixed at least !

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/bin/cupspykota

    r1497 r1498  
    2424# 
    2525# $Log$ 
     26# Revision 1.51  2004/05/25 08:31:16  jalet 
     27# Heavy CPU usage seems to be fixed at least ! 
     28# 
    2629# Revision 1.50  2004/05/25 05:17:50  jalet 
    2730# Now precomputes the job's size only if current printer's enforcement 
     
    414417             
    415418            # In any case, deal with any remaining I/O 
    416             availablefds = pollster.poll(5000) 
     419            try : 
     420                availablefds = pollster.poll(5000) 
     421            except select.error, msg :     
     422                self.logdebug("Interrupted poll : %s" % msg) 
     423                availablefds = [] 
    417424            if not availablefds : 
    418425                self.logdebug("Nothing to do, sleeping a bit...") 
     
    432439                                    else :     
    433440                                        indata = "" 
     441                                else :         
     442                                    self.logdebug("No data to send to real backend yet, sleeping a bit...") 
     443                                    time.sleep(0.01) 
     444                                     
    434445                                if endinput :     
    435446                                    self.unregisterFileNo(pollster, tocfno)         
     
    445456                                    else : 
    446457                                        outdata = "" 
     458                                else :         
     459                                    # self.logdebug("No data to send back to CUPS yet, sleeping a bit...") # Uncommenting this fills your logs 
     460                                    time.sleep(0.01) # Give some time to the system, stderr is ALWAYS writeable it seems. 
     461                                     
    447462                                if endoutput :     
    448463                                    self.unregisterFileNo(pollster, stderrfno)         
    449464                                    outputclosed = 1 
     465                            else :     
     466                                self.logdebug("Unexpected : %s - Sleeping a bit..." % self.formatFileEvent(fd, mask)) 
     467                                time.sleep(0.01) 
     468                                 
    450469                        if mask & (select.POLLIN | select.POLLPRI) :      
    451470                            # We have something to read 
     
    456475                            else : 
    457476                                if fd == infno : 
    458                                     indata += data 
    459477                                    if not data :    # If yes, then no more input data 
    460478                                        self.unregisterFileNo(pollster, infno) 
    461479                                        self.logdebug("Input data ends.") 
    462480                                        endinput = 1 # this happens with real files. 
     481                                    else :     
     482                                        indata += data 
    463483                                elif fd == fromcfno : 
    464                                     outdata += data 
     484                                    if not data : 
     485                                        self.logdebug("No back channel data to read from real backend yet, sleeping a bit...") 
     486                                        time.sleep(0.01) 
     487                                    else : 
     488                                        outdata += data 
     489                                else :     
     490                                    self.logdebug("Unexpected : %s - Sleeping a bit..." % self.formatFileEvent(fd, mask)) 
     491                                    time.sleep(0.01) 
     492                                     
    465493                        if mask & (select.POLLHUP | select.POLLERR) : 
    466494                            # Treat POLLERR as an EOF. 
     
    477505                                os.close(fromcfno) 
    478506                                endoutput = 1 
     507                            else :     
     508                                self.logdebug("Unexpected : %s - Sleeping a bit..." % self.formatFileEvent(fd, mask)) 
     509                                time.sleep(0.01) 
    479510                                 
    480511                        if mask & select.POLLNVAL :