cli python heroku flask foreman

python - cli - Flask App falla en heroku, pero trabajando con foreman



heroku panel (2)

Apuesto a que es porque estás tratando de ejecutar el servidor de desarrollo de Flask incorporado en lugar de dejar que Heroku lo ejecute en su entorno normal (que es gunicornio, creo). No puedes ejecutar ambos.

Intenta leer nuevamente estas instrucciones:

https://devcenter.heroku.com/articles/python

y trate de deshacerse del script manage.py, no creo que lo necesite.

Estoy tratando de implementar una aplicación bastante básica con Heroku, y he tenido éxito antes, pero por alguna razón estoy obteniendo un error de importación cuando lo intento ahora. Foreman Start funciona sin problemas, pero cuando trato de iniciar la aplicación, algo parece suceder que rompe las importaciones. Este es el mensaje de registro que recibo:

heroku[web.1]: Starting process with command `python manage.py runserver -p 40309` app[web.1]: Traceback (most recent call last): app[web.1]: File "manage.py", line 6, in <module> app[web.1]: ImportError: No module named SpoolEngine app[web.1]: from SpoolEngine import app heroku[web.1]: Process exited with status 1 heroku[web.1]: State changed from starting to crashed heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=tranquil-taiga-1563.herokuapp.com fwd="66.31.20.171" dyno= connect= service= status=503 bytes= heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=tranquil-taiga-1563.herokuapp.com fwd="66.31.20.171" dyno= connect= service= status=503 bytes=

Este es mi archivo de registro:

web: python manage.py runserver -p $PORT

y este es el archivo manage.py que estoy usando para comenzar todo:

import os, sys sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ''..''))) from flask.ext.script import Manager, Server from SpoolEngine import app manager = Manager(app) manager.add_command("runserver", Server( use_debugger=True, use_reloader=True, host=''0.0.0.0'') ) if __name__ == "__main__": manager.run()

Lo siento si esto es algo tonto que he hecho, pero soy bastante nuevo en este ámbito y realmente agradecería algunos consejos.


Adivinando aquí: su código muestra

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ''..'')))

De manera local, tiene algunos paquetes instalados en el directorio padre de manage.py, pero ese no es el caso en Heroku.

Solo para depurar, también agregaría

import sys print sys.path

en la parte superior de manage.py, y compare las salidas. Puede buscar sus módulos en la salida de la ejecución local, y luego heroku run bash y ver lo que hay en los directorios impresos por la ejecución remota.