/ bin / sh: 1: exec: gunicorn: introuvable

Dec 16 2020

J'essaie de déployer une application Django simple sur le moteur d'application Google Cloud. L'application dispose de serveurs wsgi et asgi de base sur lesquels wsgi traite les requêtes HTTPS et asgi les requêtes websocket. Je suis le didacticiel du moteur d'application Google pour déployer l'application et elle est créée et déployée avec succès. Cependant, il ne parvient pas à trouver les packages installés sur l'espace de travail déployé.

Voici les étapes que je suis

gcloud init
virtualenv myenv
source activate myenv/bin/activate
pip install -r requirements.txt
gcloud app deploy

requirements.txt a gunicorn et daphne et ils sont également installés.

Il s'agit d'une erreur que j'obtiens lorsque j'ouvre l'application déployée sur le navigateur.

2020-12-15 20:48:25 my-service[20201216t014451]  /bin/sh: 1: exec: gunicorn: not found

Voici à quoi ressemble mon fichier 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

J'ai également essayé en passant le chemin exact dans le point d'entrée, c'est-à-dire le point d' entrée: gunicorn -b: $ PORT main: app mais j'ai eu la même erreur

Je fais appel deploy app gcloud dans mon virtualenv mais quand il est déployé , il est incapable de lire les paquets installés et gunicorn -à- dire daphné. Ils fonctionnent tous les deux parfaitement bien sur l'environnement local dans le même répertoire avec les mêmes packages.

J'ai fait référence à ces questions ceci et cela et j'ai essayé les réponses mais rien n'a fonctionné.

Réponses

1 MuhammadZeeshan Dec 16 2020 at 16:01

Le moteur d'application GAE a besoin du fichier requirements.txt dans le même répertoire que app.yaml.

Mon fichier requirements.txt se trouvait dans un sous-dossier, c'est pourquoi le moteur d'application Google n'a pas pu installer gunicorn. J'installais les exigences localement et en passant les exigences installées lors du déploiement, mais il semble qu'il n'y ait pas besoin de les installer localement (sauf pour tester les modifications sur le serveur local).