Sto usando Gunicorn per servire un'applicazione Django, stava funzionando bene fino a quando ho cambiato il timeout da 30s a 900000s, dovevo farlo perché avevo un file in cui un enorme file doveva essere caricato e processati (processo che richiede più di 30m in alcuni casi) ma dopo questo cambiamento Gunicorn non risponde dopo poche ore, immagino che il problema siano tutti i lavoratori (essendo 30) saranno impegnati con alcune richieste dopo questo lasso di tempo, la cosa strana è succede anche se non eseguo quella lunga richiesta e succede con la normale esplorazione in admin di django. Voglio sapere se c'è un modo per monitorare le richieste su gunicorn e vedere i lavoratori sono occupati con le richieste, voglio scoprire le richieste che li rendono occupati. Ho provato --log-file=- --log-level=debug
ma non dice nulla sulle richieste, ho bisogno di registri più dettagliati.Gunicorn non risponde
risposta
Mentre cerco anche una buona risposta per vedere quanti lavoratori sono occupati, stai risolvendo questo problema nel modo sbagliato. Per un'attività che richiede tanto tempo è necessario un worker, come Celery/RabbitMQ, per eseguire il sollevamento pesante in modo asincrono, mentre il ciclo di richiesta/risposta rimane veloce.
Ho uno script sul mio sito che può prendere 5+ minuti per completare, ed ecco un buon motivo sto usando:
- Quando la richiesta viene prima in, deporre le uova del compito e semplicemente restituire un HTTP 202 accettato. Il suo scopo è "La richiesta è stata accettata per l'elaborazione, ma l'elaborazione non è stata completata."
- Chiedi al tuo front-end di eseguire lo stesso endpoint (ogni 30 secondi dovrebbe essere sufficiente). Finché l'attività non è completa, restituire un 202
- Eventualmente quando termina di restituire un 200, insieme a tutti i dati di cui potrebbe avere bisogno il front-end.
Per il mio sito, vogliamo aggiornare i dati che sono più vecchi di 10 minuti. Passo l'intestazione Accept-Datetime per indicare quanti anni di dati sono accettabili. Se la nostra copia cache locale è più vecchia di quella, generiamo il ciclo di attività.
No, non è sempre una buona soluzione, "di solito" è giusto ma non sempre. A volte la logica è quella di far aspettare l'utente fino a quando la risposta è pronta (comunque ci vuole) e mostrargli la risposta.Nel mio caso avevo bisogno di farlo ed è per questo che l'ho chiesto qui (comunque non sono io quello che ha votato la tua risposta) – Sassan
Ok, certo. Quello che ho proposto è solo di solito la risposta. Ma come "fai aspettare l'utente"? Cosa succede se colpiscono l'aggiornamento? Il lavoro continua o devono ricominciare. Se continua, come ottengono un aggiornamento di stato? – user3681414
Ho appena creato un account con Datadog. Hanno un'integrazione con gunicorn che ti permetterà di vedere quanti lavoratori sono occupati e liberi. – user3681414
- 1. Heroku + non gunicorn lavoro (bash: gunicorn: comando non trovato)
- 2. lavoratori gunicorn non partire
- 3. La tastiera non risponde
- 4. gunicorn non serve file statici
- 5. adb kill-server non risponde?
- 6. Gravità allineamento verticale non risponde
- 7. UISearchBar pulsante Annulla non risponde
- 8. Python Flask webserver non risponde
- 9. nodejs: per sempre non risponde
- 10. UIScrollView non risponde a setZoomScale:
- 11. L'emulatore di Eclipse non risponde
- 12. Visual Studio 2015 non risponde
- 13. gunicorn non elabora simultaneamente richieste simultanee
- 14. Gunicorn non si associa alla mia applicazione
- 15. gunicorn: ERRORE (nessun file simile) nginx + gunicorn + supervisore
- 16. Gunicorn funziona su Windows
- 17. Come arrestare correttamente gunicorn
- 18. Django Gunicorn Debug
- 19. Gunicorn :: ricarica dall'applicazione stessa
- 20. Timeout operaio Gunicorn
- 21. L'__array_interface__ di Numpy non risponde dict
- 22. Javascript non risponde controllando molti elementi
- 23. Android: OnClickListener non risponde sul carico iniziale?
- 24. Script non risponde - è possibile evitarlo?
- 25. PHP non risponde per Angularjs Richiesta
- 26. popoverContentSize non risponde in iOS 8
- 27. Come rendere un tavolo non risponde?
- 28. L'app Delphi XE2 non risponde su IPAD
- 29. Come verificare se il processo non risponde?
- 30. Javascript: errore di script non risponde
La mia impressione è che potrebbe esserci un deadlock in alcuni dei codici di gestione delle richieste. Con un timeout di 30 secondi, i lavoratori interessati alla fine libereranno. Con un timeout di 0.9 megasecondi, in realtà non lo faranno. –
Vedo, è per questo che ho bisogno di registri, per scoprire cosa sta succedendo. – Sassan