2013-09-26 2 views
6

Uso unicorno su Heroku. uno dei problemi che sto avendo riguarda i caricamenti di file. Usiamo carrierwave per i caricamenti e, fondamentalmente, anche per un file di circa 2 MB, al momento del caricamento del 50-60%, Unicorn scade.Errore di timeout da unicorno durante il caricamento di un file

Non stiamo utilizzando unicorno quando eseguiamo il test localmente e non ho alcun problema con i file di grandi dimensioni localmente (sebbene i file vengano caricati in AWS usando carrierwave, proprio come con production + staging). Tuttavia, nella fase di staging dei server di produzione &, vedo che si verifica un timeout.

Eventuali strategie per risolvere questo problema? Non sono sicuro di poter caricare questo file in un lavoro ritardato (perché devo confermare ai miei utenti che il file è stato effettivamente caricato correttamente).

Grazie! Ringo

+0

Puoi provare a utilizzare unicorno localmente? –

risposta

0

Sembra che il timeout sia troppo basso. Come appare la tua configurazione di unicorno?

Vedere https://devcenter.heroku.com/articles/rails-unicorn per un buon punto di partenza.

+1

il mio timeout di unicorno era 15, aumentato a 30, ma nessuna differenza. Preferirei progettare una soluzione che non dipenda dall'aumento del timeout. –

2

Se stai caricando file di grandi dimensioni su S3 tramite Heroku, non puoi ragionevolmente evitare i timeout. Se qualcuno decide di caricare un file di grandi dimensioni, andrà a timeout. Se impiega più di 30 secondi per caricare su Heroku, trasferire su S3 ed elaborare, la richiesta scadrà. Anche per una buona ragione, una richiesta di 30 secondi è solo una prestazione schifosa.

questo post del blog (e GitHub pronti contro termine) è molto utile: http://pjambet.github.io/blog/direct-upload-to-s3/

Con esso, si dovrebbe essere in grado di ottenere il caricamento di file direct-to-s3 di lavoro. Evita completamente di colpire Heroku per la maggior parte del caricamento. Usando i callback di jquery-fileupload, puoi postare l'applicazione dopo che il file è stato caricato correttamente ed elaborarlo in background usando delayed_job. Confermando ai tuoi utenti che il caricamento ha successo è un problema applicativo di cui hai solo bisogno di prendertene cura.

+0

Vedi anche: http://stackoverflow.com/a/16341162/1546887 – Taavo