Могу ли я замедлить Django

Простой вопрос действительно

./manage.py runserver

Можно ли замедлить localhost:8000 на моей машине разработки, чтобы я мог имитировать загрузку файлов и работать над внешним видом загрузки ajax?

Ответы

Ответ 1

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

from time import sleep
sleep(500)

Ответ 2

В osx или freebds вы можете использовать ipfw для ограничения полосы пропускания на определенных портах:

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

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

sudo ipfw delete 1

Кредит: jaguarcy

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

http://slowyapp.com/

Ответ 3

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

Ответ 4

Использование медленного обработчика загрузки файлов из django-gubbins:

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

Ответ 5

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

http://www.charlesproxy.com/