Ñò
$8Zc           @   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 ƒ } d | j o | d =n x› t o“ y |  | | Ž  SWq3 t i j
 ol t o t i d | ƒ n t | ƒ | d 9} | t j o
 t } n | d 8} | d j o ‚  qÉ q3 Xq3 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   Truet   dbt   DBLockDeadlockErrort   _deadlock_VerboseFilet   writet   _sleept   _deadlock_MaxSleepTime(   t   functiont   _argst   _kwargst	   sleeptimeR   (    (    s#   /usr/lib/python2.6/bsddb/dbutils.pyt   DeadlockWrap/   s&     



(   t   timeR    R	   t   syst   version_infot   absolute_importR   R   R
   t   NoneR   R   (    (    (    s#   /usr/lib/python2.6/bsddb/dbutils.pyt   <module>   s   
