summaryrefslogtreecommitdiff
path: root/django/dispatch
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2012-06-23 08:11:15 -0700
committerAlex Gaynor <alex.gaynor@gmail.com>2012-06-23 08:11:15 -0700
commite0fce8706d31f104f781676b49e7fe0df83438e0 (patch)
treeb6c7f17c8fa9121e0eded89182b28f4b51de6127 /django/dispatch
parente1b74d00945ae772300432a51a71e735143c8905 (diff)
Switch to using context managers for acquiring and releasing locks.
Diffstat (limited to 'django/dispatch')
-rw-r--r--django/dispatch/dispatcher.py17
1 files changed, 4 insertions, 13 deletions
diff --git a/django/dispatch/dispatcher.py b/django/dispatch/dispatcher.py
index b935df3c7f..e7f440a7c2 100644
--- a/django/dispatch/dispatcher.py
+++ b/django/dispatch/dispatcher.py
@@ -99,15 +99,12 @@ class Signal(object):
if weak:
receiver = saferef.safeRef(receiver, onDelete=self._remove_receiver)
- self.lock.acquire()
- try:
+ with self.lock:
for r_key, _ in self.receivers:
if r_key == lookup_key:
break
else:
self.receivers.append((lookup_key, receiver))
- finally:
- self.lock.release()
def disconnect(self, receiver=None, sender=None, weak=True, dispatch_uid=None):
"""
@@ -135,16 +132,13 @@ class Signal(object):
lookup_key = (dispatch_uid, _make_id(sender))
else:
lookup_key = (_make_id(receiver), _make_id(sender))
-
- self.lock.acquire()
- try:
+
+ with self.lock:
for index in xrange(len(self.receivers)):
(r_key, _) = self.receivers[index]
if r_key == lookup_key:
del self.receivers[index]
break
- finally:
- self.lock.release()
def send(self, sender, **named):
"""
@@ -237,8 +231,7 @@ class Signal(object):
Remove dead receivers from connections.
"""
- self.lock.acquire()
- try:
+ with self.lock:
to_remove = []
for key, connected_receiver in self.receivers:
if connected_receiver == receiver:
@@ -250,8 +243,6 @@ class Signal(object):
for idx, (r_key, _) in enumerate(reversed(self.receivers)):
if r_key == key:
del self.receivers[last_idx-idx]
- finally:
- self.lock.release()
def receiver(signal, **kwargs):