2012-04-24 6 views
14

Простой вопрос действительноМогу ли я замедлить Django

./manage.py runserver 

Могу ли я замедлить localhost:8000 на моей машине развития, поэтому я могу имитировать загрузку файлов и работу на внешний вид и загрузки Ajax?

+1

Запустить его в виртуализованной среде, которая позволяет вам контролировать скорость выполнения? – Marcin

+0

Вы можете загружать файлы большего размера. – jpic

ответ

15

В зависимости от того, где вы хотите симулировать такое, вы могли бы просто поспать?

from time import sleep 
sleep(500) 
+1

Это мой любимый способ проверить тайм-ауты HttpRequest на стороне клиента. –

+1

Хорошая идея. Мне это нравится! – Sevenearths

4

Вы можете написать customized upload handler или текущий обработчик загрузки подкласса, чтобы в основном замедлить метод receive_data_chunk(). Или установите точку останова pdb внутри receive_data_chunk() и вручную выполните загрузку. Или даже проще, попробуйте загрузить большой файл.

8

На OSX или с FreeBSD, вы можете использовать ipfw для ограничения пропускной способности отдельных портов:

sudo ipfw pipe 1 config bw 1Bytes/s delay 100ms 
    sudo ipfw add 1 pipe 1 src-port 8000 

Не забудьте удалить его, когда он не нужен больше:

sudo ipfw delete 1 

Credit: jaguarcy

Для osx есть также бесплатное приложение, которое позволит t его:

http://slowyapp.com/

+0

Мне нравится этот метод в целом для тестирования загрузки страниц для более медленных посетителей. Обработка DOM выглядит очень по-разному, когда элементы постоянно загружаются ...! –

+0

Итак, если я тестирую веб-страницу на своем Mac с сервера «localhost» Django на том же, это будет имитировать задержанную загрузку страницы? – SexyBeast

0

Я большой поклонник Чарльз HTTP прокси. Он позволяет дросселировать соединение и может имитировать все виды сетевых условий.

http://www.charlesproxy.com/

1

Используйте медленный файл обработчик загрузки с Джанго-Габбинс:

import time 
from django.core.files.uploadhandler import FileUploadHandler 

class SlowFileUploadHandler(FileUploadHandler): 
    """ 
    This is an implementation of the Django file upload handler which will 
    sleep between processing chunks in order to simulate a slow upload. This 
    is intended for development when creating features such as an AJAXy 
    file upload progress bar, as uploading to a local process is often too 
    quick. 
    """ 
    def receive_data_chunk(self, raw_data, start): 
     time.sleep(2) 
     return raw_data 

    def file_complete(self, file_size): 
     return None 

Вы можете включить это в глобальном масштабе, добавив его:

FILE_UPLOAD_HANDLERS = (
    "myapp.files.SlowFileUploadHandler", 
    "django.core.files.uploadhandler.MemoryFileUploadHandler", 
    "django.core.files.uploadhandler.TemporaryFileUploadHandler", 
) 

или включить его для конкретный запрос:

request.upload_handlers.insert(0, SlowFileUploadHandler()) 

Убедитесь, что запрос исключен из проверки CSRF, как указано в https://docs.djangoproject.com/en/dev/topics/http/file-uploads/#id1

Смежные вопросы