-
-
Save senden9/6002582 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
This module provides very simple Django middleware that sleeps on every request. | |
This is useful when you want to simulate slow response times (as might be | |
encountered, say, on a cell network). | |
To use, add this middleware, and add a value for SLEEP_TIME to your settings. | |
New feature: Look for an X-Django-Sleep header on each request, | |
to let the client specify per-request sleep time. The header override your settings. | |
X-Django-Sleep can be an float or an integer. If you use Firefox you can use the 'Modify Headers' addon | |
( https://addons.mozilla.org/en-US/firefox/addon/modify-headers/ ). | |
""" | |
import time | |
import django.core.exceptions | |
from django.conf import settings | |
class SleepMiddleware(object): | |
def __init__(self): | |
try: | |
self.sleep_time = settings.SLEEP_TIME | |
except AttributeError: | |
raise django.core.exceptions.MiddlewareNotUsed | |
if not isinstance(self.sleep_time, (int, float)) or self.sleep_time <= 0: | |
raise django.core.exceptions.MiddlewareNotUsed | |
def process_request(self, request): | |
try: | |
header = float(request.META['HTTP_X_DJANGO_SLEEP']) | |
except (KeyError, ValueError): | |
header = None | |
if header >= 0: | |
time.sleep(header) | |
else: | |
time.sleep(self.sleep_time) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment