我可以放慢Django的速度吗?

时间:2012-04-24 13:44:34

标签: django http

真正的简单问题

./manage.py runserver

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

6 个答案:

答案 0 :(得分:16)

取决于你想要模拟的地方,你可以简单地睡觉?

from time import sleep
sleep(500)

答案 1 :(得分: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

Credit: jaguarcy

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

http://slowyapp.com/

答案 2 :(得分:4)

您可以编写customized upload handler或子类当前上载处理程序来主要减慢其中receive_data_chunk()方法的速度。或者在receive_data_chunk()中设置pdb断点并手动继续上传。或者甚至更简单,尝试上传一些大文件。

答案 3 :(得分:1)

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

http://www.charlesproxy.com/

答案 4 :(得分: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

所述

答案 5 :(得分:1)

如果你想在所有请求中减慢速度,那么使用ngrok https://ngrok.com/就可以轻松实现。使用ngrok url获取请求,然后连接到另一个国家/地区的VPN。这将使你的请求真的很慢。