def _computModelDelay(self):
<EOL>if self._params['<STR_LIT>'] is not Noneand self._params['<STR_LIT>'] is not None:<EOL><INDENT>raise RuntimeError("<STR_LIT>"<EOL>"<STR_LIT>")<EOL><DEDENT>if self._sleepModelRange is not None:<EOL><INDENT>range, delay = self._sleepModelRange.split('<STR_LIT::>')<EOL>delay = float(delay)<EOL>range = map(int, range.split('<STR_LIT:U+002C>'))<EOL>modelIDs = self._jobsDAO.jobGetModelIDs(self._jobID)<EOL>modelIDs.sort()<EOL>range[<NUM_LIT:1>] = min(range[<NUM_LIT:1>], len(modelIDs))<EOL>if self._modelID in modelIDs[range[<NUM_LIT:0>]:range[<NUM_LIT:1>]]:<EOL><INDENT>self._delay = delay<EOL><DEDENT><DEDENT>else:<EOL><INDENT>self._delay = self._params['<STR_LIT>']<EOL><DEDENT>
Computes the amount of time (if any) to delay the run of this model.
        This can be determined by two mutually exclusive parameters:
        delay and sleepModelRange.

        'delay' specifies the number of seconds a model should be delayed. If a list
        is specified, the appropriate amount of delay is determined by using the
        model's modelIndex property.

        However, this doesn't work when testing orphaned models, because the
        modelIndex will be the same for every recovery attempt. Therefore, every
        recovery attempt will also be delayed and potentially orphaned.

        'sleepModelRange' doesn't use the modelIndex property for a model, but rather
        sees which order the model is in the database, and uses that to determine
        whether or not a model should be delayed.