我们从Python开源项目中,提取了以下6个代码示例,用于说明如何使用django.db.connection.in_atomic_block()。
def run_once(self, exclude_ids=[]): assert not connection.in_atomic_block return self._run_once(exclude_ids=exclude_ids)
def set_rollback(): if hasattr(transaction, 'set_rollback'): if connection.settings_dict.get('ATOMIC_REQUESTS', False): # If running in >=1.6 then mark a rollback as required, # and allow it to be handled by Django. if connection.in_atomic_block: transaction.set_rollback(True) elif transaction.is_managed(): # Otherwise handle it explicitly if in managed mode. if transaction.is_dirty(): transaction.rollback() transaction.leave_transaction_management() else: # transaction not managed pass
def __enter__(self): """Obtain lock using pg_advisory_xact_lock().""" if not connection.in_atomic_block: raise DatabaseLockAttemptOutsideTransaction(self) with closing(connection.cursor()) as cursor: query = "SELECT %s(%%s, %%s)" % self.lock cursor.execute(query, self) if cursor.fetchone() == (False,): raise DatabaseLockNotHeld(self)