Gestisco un server web Twisted e sto cercando di capire come gestire i tentativi dal client. Nel normale funzionamento il client effettua una richiesta del server con alcuni dati JSON e riceve una risposta JSON. Ogni richiesta include un'intestazione con un identificativo univoco.
Sto tentando di gestire il caso in cui il client non riceve la risposta (potrebbe scadere) e deve inviare nuovamente la richiesta. Poiché la richiesta può modificare lo stato del server, non desidero che venga rielaborato se è già stato elaborato.
Possibili approcci:
-
Quello a cui sto pensando è il caching di ogni risposta JSON e del client invia una richiesta con un ID di richiesta duplicato, quindi restituisce solo la cache dati. Il fatto è che non sono sicuro di quanto spesso succederà questa situazione effettivamente venire in natura e la memorizzazione nella cache di ogni risposta e l'ispezione di ogni richiesta potrebbe essere eccessiva (alcune risposte sono abbastanza grandi strutture JSON).
-
Potrei ridurre al minimo gran parte del caching semplicemente restituendo una risposta HTTP indica che si trattava di una richiesta duplicata, ma il cliente non lo saprà quale è stata la risposta originale.
Esiste una best practice per gestire richieste duplicate da un server?