/ bin / sh: 1: exec: gunicorn: no encontrado
Estoy tratando de implementar una aplicación django simple en el motor de aplicaciones de Google Cloud. La aplicación tiene servidores wsgi y asgi básicos donde wsgi atiende solicitudes HTTPS y asgi atiende solicitudes websocket. Estoy siguiendo el tutorial del motor de aplicaciones de Google para implementar la aplicación y se construye y se implementa con éxito. Sin embargo, no puede encontrar los paquetes instalados en el espacio de trabajo implementado.
Estos son los pasos que estoy siguiendo
gcloud init
virtualenv myenv
source activate myenv/bin/activate
pip install -r requirements.txt
gcloud app deploy
Requirements.txt tienen gunicorn y daphne y también se instalan.
Este es un error que recibo cuando abro la aplicación implementada en el navegador.
2020-12-15 20:48:25 my-service[20201216t014451] /bin/sh: 1: exec: gunicorn: not found
Así es como se ve mi archivo app.yaml
runtime: python38
service: my-service
instance_class: F2
entrypoint: gunicorn -b :$PORT main:app
handlers:
- url: /.*
script: auto
secure: always
inbound_services:
- warmup
automatic_scaling:
min_instances: 1
min_idle_instances: 1
max_instances: 2
max_idle_instances: 1
También lo intenté pasando la ruta exacta en el punto de entrada, es decir, punto de entrada: gunicorn -b: $ PORT main: app pero obtuve el mismo error
Estoy llamando a la implementación de la aplicación gcloud dentro de mi virtualenv, pero cuando se implementa no puede leer los paquetes instalados, es decir, daphne y gunicorn. Ambos funcionan perfectamente en el entorno local en el mismo directorio con los mismos paquetes.
Me he referido a estas preguntas, esto y esto, y probé las respuestas, pero nada funcionó.
Respuestas
El motor de la aplicación GAE necesita el archivo requirements.txt en el mismo directorio que app.yaml.
Mi archivo requirements.txt estaba en una subcarpeta, es por eso que el motor de la aplicación de Google no pudo instalar gunicorn. Estaba instalando los requisitos localmente y pasando los requisitos instalados durante la implementación, pero parece que no hay necesidad de instalarlos localmente (excepto para probar los cambios en el servidor local).