mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	Fixed #27513 -- Made Signal.send()/send_robust() a tiny bit faster.
This commit is contained in:
		| @@ -185,14 +185,13 @@ class Signal(object): | ||||
|  | ||||
|         Returns a list of tuple pairs [(receiver, response), ... ]. | ||||
|         """ | ||||
|         responses = [] | ||||
|         if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS: | ||||
|             return responses | ||||
|             return [] | ||||
|  | ||||
|         for receiver in self._live_receivers(sender): | ||||
|             response = receiver(signal=self, sender=sender, **named) | ||||
|             responses.append((receiver, response)) | ||||
|         return responses | ||||
|         return [ | ||||
|             (receiver, receiver(signal=self, sender=sender, **named)) | ||||
|             for receiver in self._live_receivers(sender) | ||||
|         ] | ||||
|  | ||||
|     def send_robust(self, sender, **named): | ||||
|         """ | ||||
| @@ -218,12 +217,12 @@ class Signal(object): | ||||
|         receiver. The traceback is always attached to the error at | ||||
|         ``__traceback__``. | ||||
|         """ | ||||
|         responses = [] | ||||
|         if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS: | ||||
|             return responses | ||||
|             return [] | ||||
|  | ||||
|         # Call each receiver with whatever arguments it can accept. | ||||
|         # Return a list of tuple pairs [(receiver, response), ... ]. | ||||
|         responses = [] | ||||
|         for receiver in self._live_receivers(sender): | ||||
|             try: | ||||
|                 response = receiver(signal=self, sender=sender, **named) | ||||
|   | ||||
| @@ -8,7 +8,7 @@ from django.core.signals import setting_changed | ||||
| from django.db import connections, router | ||||
| from django.db.utils import ConnectionRouter | ||||
| from django.dispatch import Signal, receiver | ||||
| from django.utils import timezone | ||||
| from django.utils import six, timezone | ||||
| from django.utils.functional import empty | ||||
|  | ||||
| template_rendered = Signal(providing_args=["template", "context"]) | ||||
| @@ -127,9 +127,9 @@ def file_storage_changed(**kwargs): | ||||
| def complex_setting_changed(**kwargs): | ||||
|     if kwargs['enter'] and kwargs['setting'] in COMPLEX_OVERRIDE_SETTINGS: | ||||
|         # Considering the current implementation of the signals framework, | ||||
|         # stacklevel=5 shows the line containing the override_settings call. | ||||
|         # this stacklevel shows the line containing the override_settings call. | ||||
|         warnings.warn("Overriding setting %s can lead to unexpected behavior." | ||||
|                       % kwargs['setting'], stacklevel=5) | ||||
|                       % kwargs['setting'], stacklevel=5 if six.PY2 else 6) | ||||
|  | ||||
|  | ||||
| @receiver(setting_changed) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user