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.