Ñò
p±ÅHc           @   sq   d  d k  l Z d  d k Z e i d d j Z e o d d Un d  d k Z d d Z d Z d Z
 d	 „  Z d S(
   iÿÿÿÿ(   t   sleepNi    i   s   from . import dbg      ð?i€   gn†ðù!	@c         O   sÕ   t  } | i d d ƒ } | i d ƒ o | d =n x› t o“ y |  | | Ž  SWq6 t i j
 ol t o t i d | ƒ n t | ƒ | d 9} | t	 j o
 t	 } n | d 8} | d j o ‚  qÌ q6 Xq6 Wd S(   s?  DeadlockWrap(function, *_args, **_kwargs) - automatically retries
    function in case of a database deadlock.

    This is a function intended to be used to wrap database calls such
    that they perform retrys with exponentially backing off sleeps in
    between when a DBLockDeadlockError exception is raised.

    A 'max_retries' parameter may optionally be passed to prevent it
    from retrying forever (in which case the exception will be reraised).

        d = DB(...)
        d.open(...)
        DeadlockWrap(d.put, "foo", data="bar")  # set key "foo" to "bar"
    t   max_retriesiÿÿÿÿs%   dbutils.DeadlockWrap: sleeping %1.3f
i   i   N(
   t   _deadlock_MinSleepTimet   gett   has_keyt   Truet   dbt   DBLockDeadlockErrort   _deadlock_VerboseFilet   writet   _sleept   _deadlock_MaxSleepTime(   t   functiont   _argst   _kwargst	   sleeptimeR   (    (    s/   P:\graphics\Tools\Python26\lib\bsddb\dbutils.pyt   DeadlockWrap/   s&     



(   t   timeR    R
   t   syst   version_infot   absolute_importR   R   R   t   NoneR   R   (    (    (    s/   P:\graphics\Tools\Python26\lib\bsddb\dbutils.pyt   <module>   s   
