2012-03-06 8 views
11

estoy tratando de permitir grandes archivos cuando se ejecuta unicornio en Heroku con Rails pero me he dado cuenta de que cualquier subida grandes podrían tomar más tiempo que el período de tiempo de espera para un trabajador del unicornio. Esto significará (he visto que esto suceda) que el proceso maestro unicornio matará al trabajador la posibilidad de subir el archivo de gran tamaño y la solicitud será el tiempo de espera (con un error 503).unicornio + Rails + Grandes Cargas

Sin quitar o aumentar masivamente el tiempo de espera para mi servidor ¿Hay alguna forma para permitir que el trabajador carga para colgar mientras que la carga completa? ¿O estoy completamente equivocado y es más probable que haya algo más que esté causando que mis cargas se agote el tiempo de espera?

Respuesta

7

Si estás subiendo a S3, entonces puede "simplemente" tener los archivos de subida directa del usuario a través de S3 en lugar de los dinamómetros, y obtener pinged cuando la carga esté completa.

Para mucha más información que esto, echa un vistazo a algo así como CarrierWaveDirect

+0

estoy usando CarrierWaveDirect, pero todavía tenían que aumentar el tiempo de espera de los trabajadores unicornio, porque van a bloquearse si la carga del archivo tarda demasiado tiempo, incluso si está utilizando CarrierWaveDirect. – cantonic

8

Si está usando Nginx como proxy inverso frente a sus unicornios, se puede utilizar el Upload Module. Cuando se configura, nginx gestiona la carga y lo almacena en un directorio/tmp, entonces su unicornio consigue petición params diciendo donde el activo es subido y es el tipo de contenido. No más trabajadores atados recibiendo la carga.

Si realmente no desea la carga en el mismo servidor que su servicio web, sino que la almacena en S3, debe seguir la sugerencia de @Neil Middleton y configurar las cosas para que la carga vaya directamente allí.

Cuestiones relacionadas