Corsi on-line

Simulare una connessione lenta con Django

Quando si testano applicazioni client side localmente è possibile simulare un buon numero di situazioni critiche e di possibili scenari in grado di generare malfunzionamenti, il tutto nell’ottica di un debugging quanto più accurato possibile; risulta invece abbastanza complesso riprodurre una condizione che tenga conto della velocità di connessione nell’interscambio di dati tra client e server previsto dal classico meccanismo richiesta/generazione della risorsa desiderata.

django

Simulare una connessione lenta potrebbe risultare particolarmente utile nel caso in cui si desideri monitorare un determinato evento in grado di manifestarsi nell’intervallo di tempo (non di rado brevissimo) tra invio dell’input e restituzione dell’output attraverso protocollo di comunicazione (HTTP request\HTTP response); ma come riprodurre una simile eventualità in un ambiente non favorevole ai rallentamenti come quello locale?

A questo proposito il bravo software developer indiano Ankur Sethi ha proposto una soluzione basata sul Python Web framework Django, essa consiste nell’utilizzo di un middleware (un intermediario tra applicazione e componente software) che sfrutta il metodo time.sleep() per ritardare fino ad un tempo pari a 4 secondi ogni risposta HTTP restituita da un’applicazione single page basata su AngularJS.

Il codice del middleware è estremamente semplice:

import random
import time

class SlowPony(object):
    def process_response(self, request, response):
        time.sleep(random.randint(0, 4))
        return response

Come sottolineato dallo stesso sviluppatore, la soluzione proposta presenta degli evidenti limiti, come per esempio il fatto di non prevedere il timeout delle richieste, un evento abbastanza frequente nell’uso dei dispositivi mobili per la navigazione; si tratta comunque di un workaround ottimale data l’assenza di tool per lo sviluppo in grado di simulare i rallentamenti nei browser come Google Chrome e Firefox.

Fonte: Ankur Sethi’s Blog

Post correlati
I più letti del mese
Tematiche