L'utente crea una cartella nel client e nel codice lato client colpisco un'API sul server per renderlo persistente per quell'utente. Ma in alcuni casi, il mio server è così occupato che la richiesta è scaduta. Il server ha eseguito la mia richiesta ma il timeout prima di inviare una risposta al client. Il timeout impostato è 10 secondi nel client. A questo punto il client pensa che il server non abbia eseguito la sua richiesta (di creazione di una cartella) e finisca per inviarlo di nuovo. Ora ho 2 cartelle sul server ma l'utente ha creato solo 1 cartella nel client. Come prevenire questo?
Uno dei modi per risolverlo è utilizzare un ID univoco con ogni nuova richiesta. Quindi l'ID funge da distinguo tra vecchie e nuove richieste da parte del cliente. Ma questo porta alla memorizzazione di questi ID sul mio server e faccio una ricerca per ogni chiamata API che voglio evitare.
L'altro modo è aumentare la durata del timeout. Ma non voglio cambiarlo da 10 secondi.
Qualcosa mi dice che ci sono soluzioni migliori.
Ho postato questa domanda in StackOverflow, ma penso che sia più adatto qui.
AGGIORNAMENTO: renderò il mio problema ancora più esplicito. Il client è un browser web e il server esegue nginx + django + mysql (stack standard). L'utente crea una cartella in webbrowser. Di conseguenza ho bisogno di colpire un'API del server. La chiamata API risponde, quindi il client sa che la chiamata all'API ha avuto successo. Questo è uno scenario normale. A volte, tuttavia, il server completa correttamente la richiesta dell'API ma il timeout della connessione sul lato client (webbrowser) prima che il server possa rispondere. Il cliente non ha idea a questo punto. L'utente pensa che la richiesta sia fallita & clicca di nuovo. Questa volta è stato un successo ma quando l'interfaccia utente si aggiorna vede 2 cartelle. Voglio rimediare a questa situazione.