2012-04-24 5 views
14

Einfache Frage wirklichKann ich Django verlangsamen

./manage.py runserver 

Kann ich nach unten localhost:8000 auf meiner Entwicklung Maschine verlangsamen, damit ich das Hochladen von Dateien und die Arbeit an dem Look and Feel von Ajax Upload simulieren kann?

+1

Run es in einer virtualisierten Umgebung erwähnt, die Ihnen eine hohe Ausführungsgeschwindigkeit steuern? – Marcin

+0

Sie könnten größere Dateien hochladen. – jpic

Antwort

15

je nachdem, wo Sie so simulieren möchten, könnten Sie einfach schlafen?

from time import sleep 
sleep(500) 
+1

Dies ist meine Lieblingsmethode, um HttpRequest Timeouts auf der Client-Seite der Dinge zu testen. –

+1

Gute Idee. Ich mag das! – Sevenearths

4

Sie könnten einen customized upload handler oder Unterklasse aktuellen Upload-Handler schreiben, um hauptsächlich die Methode receive_data_chunk() darin zu verlangsamen. Oder setzen Sie einen pdb-Haltepunkt in receive_data_chunk() und führen Sie das Hochladen manuell aus. Oder noch einfacher, versuchen Sie, eine große Datei hochzuladen.

8

Auf osx oder FreeBDS können Sie ipfw verwenden Bandbreite auf bestimmte Ports zu begrenzen:

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

Vergessen Sie nicht, um es zu löschen, wenn Sie es nicht mehr benötigen:

sudo ipfw delete 1 

Credit: jaguarcy

Für osx gibt es auch kostenlose App, die t erlauben wird sein:

http://slowyapp.com/

+0

Ich liebe diese Methode im Allgemeinen, um Seitenladungen für langsamere Besucher zu testen. Die DOM-Verarbeitung sieht sehr unterschiedlich aus, wenn Elemente ständig geladen werden ...! –

+0

Also, wenn ich eine Webseite auf meinem Mac von 'localhost' Django Server auf dem gleichen testen, simuliert dies eine verzögerte Seitenladung? – SexyBeast

0

Ich bin ein großer Fan von dem Charles-HTTP-Proxy. Sie können die Verbindung drosseln und alle möglichen Netzwerkbedingungen simulieren.

http://www.charlesproxy.com/

1

Verwenden Sie die langsame Datei-Upload-Handler von 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 

Sie können entweder diese global aktivieren, durch Zugabe zu:

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

Oder ermöglichen es für eine spezifische Anfrage:

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

Sicherstellen, dass die Anfrage von CSRF Überprüfung ausgenommen wird, wie bei https://docs.djangoproject.com/en/dev/topics/http/file-uploads/#id1

Verwandte Themen