Non conosco le "migliori pratiche". Conosco gli errori più comuni.
Primo errore: DOS Yourself
Utilizzi il webhandler per elaborare il lavoro di lunga durata. Questo può essere cattivo o estremamente cattivo a seconda della percentuale di hit che diventano lavori in esecuzione di lunga durata, per quanto tempo vengono eseguiti e di quanto traffico continuo si ottiene.
Si desidera assicurarsi che non si ottenga più di 1 lavoro in esecuzione lungo nel periodo di tempo necessario per il completamento di tale lavoro di lunga durata. Se lo fai tu DOS. Inoltre, peggiorerà la quantità di traffico che ottieni assumendo la percentuale e il tempo rimane costante. È uno di quei problemi che impone un limite alla crescita del traffico.
Secondo errore: spawning dal webhandler
Generare un processo dal gestore web per gestire un processo a lungo termine può essere complicato e, di conseguenza, anche soggetto a errori.
- Devi dissociarti dal genitore correttamente altrimenti il webhandler attende il completamento del figlio.
- Quando forzi un figlio in unix, eredita le maniglie aperte dal genitore. Questi saranno automaticamente chiusi a meno che non vengano sovrascritti. Questo include cose come connessioni al database, filehandle, altre connessioni di rete aperte. Tutti ricevono chiudi al termine del processo secondario.
Opzioni
Di solito uso at(1)
per dissociarti in modo pulito dal webhandler senza biforcarsi.
Puoi anche utilizzare un'implementazione di polling con cron
.
È possibile comunicare con un altro processo server che gestisce l'elaborazione. Questa comunicazione può essere eseguita con sockets
, pipes
o astrazioni di livello superiore come una chiamata http REST o il routing di un messaggio in coda.