Come architettura di progettazione API per un lungo processo di delay

0

Sto cercando di avviare una progettazione API usando Django Rest Framework e il problema che sto cercando di risolvere è il seguente: La richiesta di endpoint è come questa: INVIARE link attributo: crea

Quando il mio server riceve questa richiesta API, avvierà un processo di back-end che impiega circa 20-60 secondi (avvia una connessione SSH a un server remoto e controlla periodicamente lo stato in quel punto). Non sono sicuro di come rispondere alla richiesta iniziale dell'API? Usando l'indicazione 200 OK, la richiesta viene gestita con un "avvio" e quindi offre un endpoint per fornire lo stato?

Qual è la migliore architettura per questo tipo di richieste?

    
posta spicyramen 17.02.2015 - 01:56
fonte

1 risposta

3

Se il server blocca e risponde solo quando il lavoro è finito, l'HTTP 200 è davvero la strada da percorrere. Assicurati di documentare i tempi di attesa, poiché alcuni clienti potrebbero avere timeout più brevi (e i clienti che attendono la risposta potrebbero ritenere che sia successo qualcosa di sbagliato).

Altrimenti, puoi tornare immediatamente, nel qual caso l'HTTP 202 è il codice corretto:

HTTP 202 Accepted

The request has been accepted for processing, but the processing has not been completed.

Fonte: RFC 2616

Nota: invece di (o in aggiunta a) creare l'endpoint che fornisce lo stato, puoi anche considerare WebSockets . Questo può ridurre la larghezza di banda liberando il client dall'invio di richieste ripetitive di stato: al contrario, il server invierà al client una notifica al termine del processo.

    
risposta data 17.02.2015 - 04:31
fonte

Leggi altre domande sui tag