Escribí una secuencia de comandos python para procesar algunos datos de archivos CSV. El script tarda entre 3 y 30 minutos en completarse, dependiendo del tamaño del CSV.Creación de una interfaz web para una secuencia de comandos que tarda 30 minutos en ejecutarse
Ahora quiero poner una interfaz web para esto, así puedo cargar los archivos de datos CSV desde cualquier lugar. Escribí una página de carga HTTP POST básica y utilicé el módulo CGI de Python, pero el script simplemente se agota después de un tiempo.
La secuencia de comandos emite encabezados HTTP al inicio y genera bits de datos después de iterar sobre cada línea de la CSV. Como ejemplo, esta declaración de impresión se activaría cada 30 segundos más o menos.
# at the very top, with the 'import's
print "Content-type: text/html\n\n Processing ... <br />"
# the really long loop.
for currentRecord in csvRecords:
count = count + 1
print "On line " + str(count) + " <br />"
Supuse que el navegador recibiría los encabezados, y espere porque sigue recibiendo pequeños bits de datos. Pero lo que realmente parece suceder es que no recibe ningún dato, y Error 504
agota el tiempo cuando se le entrega un CSV con muchas líneas.
¿Quizás hay algo de almacenamiento en caché en algún lugar? A partir de los registros,
[Wed Jan 20 16:59:09 2010] [error] [client ::1] Script timed out before returning headers: datacruncher.py, referer: http://localhost/index.htm
[Wed Jan 20 17:04:09 2010] [warn] [client ::1] Timeout waiting for output from CGI script /Library/WebServer/CGI-Executables/datacruncher.py, referer: http://localhost/index.htm
¿Cuál es la mejor manera de resolver esto, o, no es apropiado para ejecutar este tipo de scripts en un navegador?
Editar: Este es un script para mi propio uso - que normalmente la intención de usarlo en mi equipo, pero me pareció una interfaz basada en la web podría ser útil durante el viaje, o por ejemplo, de un teléfono. Además, realmente no hay nada que descargar: el script probablemente enviará por correo electrónico un informe al final.
¿Cree que alguien en esta tierra tiene paciencia suficiente para esperar 30 minutos para cargar una página web en el navegador, en lugar de descargarla como datos? – YOU
Este es un script para mi propio uso. Normalmente tengo la intención de usarlo en mi computadora, pero pensé que una interfaz basada en web podría ser útil mientras viaja, o por ejemplo desde un teléfono. Además, no hay nada que descargar: el script enviará un informe por correo electrónico al final. – Pranab
@Pranab: "Este es un script para mi propio uso". Entonces, ¿qué problema tienes? ¿Por qué no dejarlo correr? ¿Por qué perder el tiempo? Si es para usted, y solo envía un correo electrónico, ni siquiera es una página web, ¿verdad? ¿Por qué no simplemente escribir un simple script de Python? –