home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_281 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  1.0 KB  |  44 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. from time import sleep as _sleep
  5. import sys
  6. absolute_import = sys.version_info[0] >= 3
  7. if absolute_import:
  8.     exec 'from . import db'
  9. else:
  10.     import db
  11. _deadlock_MinSleepTime = 1 / 128
  12. _deadlock_MaxSleepTime = 3.14159
  13. _deadlock_VerboseFile = None
  14.  
  15. def DeadlockWrap(function, *_args, **_kwargs):
  16.     sleeptime = _deadlock_MinSleepTime
  17.     max_retries = _kwargs.get('max_retries', -1)
  18.     if _kwargs.has_key('max_retries'):
  19.         del _kwargs['max_retries']
  20.     
  21.     while True:
  22.         
  23.         try:
  24.             return function(*_args, **_kwargs)
  25.         continue
  26.         except db.DBLockDeadlockError:
  27.             if _deadlock_VerboseFile:
  28.                 _deadlock_VerboseFile.write('dbutils.DeadlockWrap: sleeping %1.3f\n' % sleeptime)
  29.             
  30.             _sleep(sleeptime)
  31.             sleeptime *= 2
  32.             if sleeptime > _deadlock_MaxSleepTime:
  33.                 sleeptime = _deadlock_MaxSleepTime
  34.             
  35.             max_retries -= 1
  36.             if max_retries == -1:
  37.                 raise 
  38.             max_retries == -1
  39.             continue
  40.         
  41.  
  42.         None<EXCEPTION MATCH>db.DBLockDeadlockError
  43.  
  44.