2012-04-24 14 views
14

pregunta simple en realidad¿Puedo retrasar Django

./manage.py runserver 

¿Puedo retrasar localhost:8000 en mi máquina de desarrollo para que pueda simular la carga de archivos y trabajar en el aspecto y la sensación de subir ajax?

+1

¿Lo ejecuta en un entorno virtualizado que le permite controlar la velocidad de ejecución? – Marcin

+0

Puede cargar archivos más grandes. – jpic

Respuesta

15

dependiendo de dónde desee simular, simplemente podría dormir?

from time import sleep 
sleep(500) 
+1

Esta es mi forma favorita de probar los tiempos de espera de HttpRequest en el lado del cliente. –

+1

Buena idea. ¡Me gusta! – Sevenearths

4

Puede escribir customized upload handler o un gestor de carga actual de subclase para ralentizar principalmente el método receive_data_chunk() en él. O configure un punto de interrupción pdb dentro de receive_data_chunk() y procese manualmente la carga. O incluso más simple, intente cargar un archivo grande.

8

en OSX o freebds, puede utilizar ipfw para limitar el ancho de banda en los puertos específicos:

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

No se olvide de eliminarla cuando no lo necesita más:

sudo ipfw delete 1 

Credit: jaguarcy

Para osx también hay una aplicación gratuita que permitirá t su:

http://slowyapp.com/

+0

Me encanta este método en general para probar cargas de página para visitantes más lentos. ¡El procesamiento de DOM se ve muy diferente cuando los elementos se cargan constantemente ...! –

+0

Entonces, si estoy probando una página web en mi Mac desde 'localhost' servidor Django en la misma, ¿esto simulará una carga de página demorada? – SexyBeast

0

Soy un gran fan del Proxy HTTP Charles. Le permite acelerar la conexión y puede simular todo tipo de condiciones de red.

http://www.charlesproxy.com/

1

Utilice el controlador de carga de archivos lenta de 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 

Usted puede habilitar este nivel mundial, añadiéndolo a:

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

O habilitarlo para una solicitud específica:

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

Asegúrese de que la solicitud esté exceptuada de la verificación CSRF, como se menciona en https://docs.djangoproject.com/en/dev/topics/http/file-uploads/#id1

Cuestiones relacionadas