diff options
| author | Alex Gaynor <alex.gaynor@gmail.com> | 2012-06-23 08:11:15 -0700 |
|---|---|---|
| committer | Alex Gaynor <alex.gaynor@gmail.com> | 2012-06-23 08:11:15 -0700 |
| commit | e0fce8706d31f104f781676b49e7fe0df83438e0 (patch) | |
| tree | b6c7f17c8fa9121e0eded89182b28f4b51de6127 /django/dispatch | |
| parent | e1b74d00945ae772300432a51a71e735143c8905 (diff) | |
Switch to using context managers for acquiring and releasing locks.
Diffstat (limited to 'django/dispatch')
| -rw-r--r-- | django/dispatch/dispatcher.py | 17 |
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): |
