2012-10-03 33 views
5

Estoy usando Heroku con python y Flask. Mi aplicación funcionaba bien hasta que actualicé algunas líneas en mi archivo de aplicación Python. La aplicación funciona bien localmente, pero ahora tengo el siguiente error cuando intento acceder a mi aplicación:La aplicación Heroku se colgó después de presionar un pequeño cambio. Muy confuso

"Ha ocurrido un error en la aplicación y su página no se ha podido servir. Vuelva a intentarlo en unos minutos. Si usted es el propietario de la aplicación, verifique sus registros para obtener más detalles ".

registros de mi mirada algo como esto:

2012-10-03T17:40:26+00:00 heroku[web.1]: Process exited with status 1 
2012-10-03T17:40:26+00:00 heroku[web.1]: State changed from starting to crashed 
2012-10-03T17:51:25+00:00 heroku[web.1]: State changed from crashed to starting 
2012-10-03T17:51:26+00:00 heroku[web.1]: Starting process with command `python presentation.py` 
2012-10-03T17:51:26+00:00 app[web.1]: ImportError: No module named site 

también soy ya no es capaz de ejecutar Python a través heroku:

Cinnas-MacBook-Pro:infinite-fortress-4866 cinna$ heroku run python 
Running `python` attached to terminal... up, run.1 
ImportError: No module named site 

La siguiente cosa que he tratado de hacer es comprobar mi entorno variables:

Cinnas-MacBook-Pro:infinite-fortress-4866 cinna$ heroku config 
=== infinite-fortress-4866 Config Vars 
LANG:    en_US.UTF-8 
LD_LIBRARY_PATH: /app/.heroku/vendor/lib 
LIBRARY_PATH:  /app/.heroku/vendor/lib 
PATH:    /app/.heroku/venv/bin:/bin:/usr/local/bin:/usr/bin 
PYTHONHASHSEED: random 
PYTHONHOME:  /app/.heroku/venv/ 
PYTHONPATH:  /app/ 
PYTHONUNBUFFERED: true 

Sin embargo, cuando intento mirar dentro de la lib directorios de rary, obtengo algo como esto:

Cinnas-MacBook-Pro:infinite-fortress-4866 cinna$ heroku run ls /app/.heroku/vendor/lib 
Running `ls /app/.heroku/vendor/lib` attached to terminal... up, run.1 
ls: cannot access /app/.heroku/vendor/lib: No such file or directory 

No estoy seguro de dónde proceder en este momento. Extraño mi aplicación, ¡por favor ayuda!

Información adicional:

Los problemas Todo comenzó cuando he añadido las siguientes líneas a mi código app.py:

@app.route('/my_fb_graph',methods=['GET','POST']) 
def my_fb_graph(): 
return render_template('my_fb_graph.html') 

Cuando empujó el código y la aplicación ya no funcionaba. Luego eliminé estas líneas de código, presioné nuevamente el código y obtuve los mismos errores. Lo siguiente que hice fue eliminar por completo el archivo app.py e intentar con un código de prueba pequeño que aún no funcionaba.

La raíz del problema parece ser el error:

2012-10-03T17:51:26+00:00 app[web.1]: ImportError: No module named site 
+0

Se podría empezar por describir exactamente lo que el cambio que hizo fue –

+0

si cambiarlo de vuelta ¿funciona de nuevo? si es así, es probable que haya un error en su cambio ... –

+0

Gracias por los comentarios, agregué más información. No solo lo cambié, traté de eliminar completamente la app.py y ejecutar un pequeño código de prueba. – Cinna

Respuesta

6

que era capaz de solucionar el problema, pero aún no saben por qué ocurrió en el primer lugar!

Después de mucha experimentación, terminé configurando una aplicación completamente nueva en Heroku. Revisé las variables de entorno en la nueva aplicación y obtuve el siguiente:

Cinnas-MacBook-Pro:thawing-temple-4323 cinna$ heroku config 
=== thawing-temple-4323 Config Vars 
FACEBOOK_APP_ID: *** 
FACEBOOK_SECRET: *** 
PATH:    bin:/usr/local/bin:/usr/bin:/bin 
PYTHONUNBUFFERED: true 

Comprobación de mi aplicación original (el roto uno), me di cuenta de que las nuevas variables de entorno de alguna manera se añaden en mi último empujón como se indica en los registros de mi:

2012-10-04T04:20:04+00:00 heroku[api]: Add PYTHONUNBUFFERED, PYTHONPATH, PYTHONHOME, LANG, LD_LIBRARY_PATH, PATH, PYTHONHASHSEED, LIBRARY_PATH config by ***@*** 

y comprobando mis variables de entorno:

Cinnas-MacBook-Pro:infinite-fortress-4866 cinna$ heroku config 
=== infinite-fortress-4866 Config Vars 
LANG:    en_US.UTF-8 
LD_LIBRARY_PATH: /app/.heroku/vendor/lib 
LIBRARY_PATH:  /app/.heroku/vendor/lib 
PATH:    /app/.heroku/venv/bin:/bin:/usr/local/bin:/usr/bin 
PYTHONHASHSEED: random 
PYTHONHOME:  /app/.heroku/venv/ 
PYTHONPATH:  /app/ 
PYTHONUNBUFFERED: true 

que eliminan estas nuevas variables con el comando:

heroku config:remove PYTHONPATH PYTHONHOME LANG LD_LIBRARY_PATH PYTHONHASHSEED LIBRARY_PATH 

y mi aplicación comenzó a funcionar nuevamente. He estado presionando más código, y este problema no ha vuelto a ocurrir.

Sigo siendo curioso sobre por qué/cómo se agregaron estas variables en primer lugar, ya que todo lo que hice fue hacer un git push.

+0

¡Gracias por esto! Pregunta al margen: ¿cómo conseguiste tus registros? El único comando que conozco es 'registros heroku', ¿hay algún otro? –

+0

Esto funcionó para mí también, ¡así que gracias! ¿Supongo que la configuración de mi aplicación es bastante antigua? –

6

Ayer tuve un problema muy similar (6 de diciembre de 2012). De la nada, cada invocación de Python murió con 'ImportError: ningún módulo llamado sitio'. El soporte de Heroku me llegó hoy y dicen que está arreglado en su extremo, por lo que la siguiente solución no debería ser requerida. Dejaré esto aquí en caso de que ayude a alguien más a diagnosticar.

Sin embargo, verifiqué mis valores de configuración heroku y no se establecieron las variables PYTHON *. Se los ha designado env vars a nivel cáscara sin embargo:

$ heroku run set | grep PYTHON 
PYTHONHASHSEED=random 
PYTHONHOME=/app/.heroku/venv/ 
PYTHONPATH=/app/ 
PYTHONUNBUFFERED=true 

/app/.heroku/venv era un directorio inexistente. Si me hizo caso omiso de PYTHONHOME con una configuración var, y señaló hacia donde realmente era mi virtualenv, todo empezó a funcionar de nuevo:

$ heroku config:set PYTHONHOME=/app 

/app parece ser un punto de montaje para el directorio raíz del proyecto. Explorando la historia del buildpack de Python, parece que cuando comencé mi proyecto, todos hicieron sus virtualenvs en la raíz del proyecto. Ahora los nuevos proyectos hacen virtualenvs en un subdirectorio venv. Support dijo que estaban implementando gradualmente un cambio de buildpack, y supongo que los controles para la vieja forma de hacer las cosas no funcionaron para mí.

Aquí es dónde buscar los elementos internos buildpack: https://github.com/heroku/heroku-buildpack-python/blob/master/bin/compile

+0

¡Salud, eso funcionó para mí! –

+0

Tuve el mismo problema, hoy, gracias. –

+0

Intenté esto ... no funciona. Estoy usando virtualenvwrapper ... ¿Eso lo afectaría? – zakdances

1

Esto me mordió, también. No estoy seguro de cuándo comenzó. No creo que fue en respuesta a cualquier cambio de mi parte, me he dado cuenta de errores de aplicaciones en mi site hoy, y encontré esto en los registros:

2012-12-12T16:02:06+00:00 heroku[web.1]: State changed from crashed to starting 
2012-12-12T16:02:09+00:00 heroku[web.1]: Starting process with command `aspen --network_address=:40856 --www_root=doc/ --project_root=doc/.aspen` 
2012-12-12T16:02:10+00:00 app[web.1]: ImportError: No module named site 
2012-12-12T16:02:11+00:00 heroku[web.1]: Process exited with status 1 
2012-12-12T16:02:11+00:00 heroku[web.1]: State changed from starting to crashed 

tuve otro lanzamiento listo para funcionar, por lo que simplemente desplegado como de costumbre. Después de git push heroku, el sitio se respalda. Mi heroku config no tiene los envvars adicionales mencionados anteriormente:

$ heroku config 
=== aspen-io Config Vars 
ASPEN_IO_SHOW_GA: yes 
PATH:    bin:/usr/local/bin:/usr/bin:/bin 
PYTHONUNBUFFERED: true 

Actualización: @kennethreitz pointed me a this:

Cannot import module site

This occurs when the configured environment variables don't match the paths of the installed Python. When this occurs, it is because someone purged an app's cache without understanding the above implications.

To fix, either purge the cache and update the configuration, or restore the expected configurations (preferred).

Cuestiones relacionadas