17

真的很简单的问题

./manage.py runserver

我可以在我的开发机器上放慢速度,localhost:8000以便我可以模拟文件上传并处理 ajax 上传的外观和感觉吗?

4

6 回答 6

16

根据您要模拟的位置,您可以简单地睡觉吗?

from time import sleep
sleep(500)
于 2012-04-24T15:13:17.213 回答
8

在 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

学分:美洲虎

对于 osx,还有一个免费的应用程序允许这样做:

http://slowyapp.com/

于 2012-04-24T15:18:01.427 回答
4

您可以编写自定义的上传处理程序或子类当前上传处理程序来主要减慢其中的receive_data_chunk()方法。或者在里面设置一个 pdb 断点,receive_data_chunk()然后手动继续上传。或者更简单,尝试上传一些大文件。

于 2012-04-24T13:54:26.943 回答
1

我是 Charles HTTP 代理的忠实粉丝。它可以让您限制连接并可以模拟各种网络条件。

http://www.charlesproxy.com/

于 2012-04-24T20:08:51.873 回答
1

使用来自 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所述

于 2014-07-28T13:32:46.553 回答
1

如果您想减慢所有请求的速度,一个非常简单的方法是使用 ngrok https://ngrok.com/。使用 ngrok url 进行请求,然后连接到另一个国家的 vpn。这将使您的请求非常缓慢。

于 2018-04-18T11:05:53.133 回答