Préparer les fichiers de configuration pour l'environnement d'exécution Python 3

Avant de pouvoir exécuter votre application dans l'environnement d'exécution Python 3 de l'environnement standard App Engine, vous devrez peut-être modifier certains des fichiers de configuration utilisés par App Engine :

  • app.yaml : ce fichier contient des informations sur le code de votre application, telles que l'environnement d'exécution et les gestionnaires d'application.

  • appengine_config.py L'environnement d'exécution Python 2 utilise ce fichier pour accéder aux bibliothèques tierces et fournir des valeurs pour les constantes et les "fonctions de hook". L'environnement d'exécution Python 3 n'utilise pas ce fichier.

Mettre à jour app.yaml

Le comportement de certains champs de votre fichier de configuration app.yaml a été modifié. Supprimez tous les champs qui ne sont plus compatibles et mettez à jour les autres champs comme décrit dans le tableau suivant.

Champ(s) Type de modification Description
app_engine_apis Applicable à Python 3 uniquement Doit être défini sur true si vous souhaitez accéder aux anciens services groupés pour Python 3.
api_version
application_readable
builtins
Ne sont plus compatibles. Non applicables dans l'environnement d'exécution Python 3.
threadsafe N'est plus compatible. Toutes les applications sont supposées être "threadsafe". Si votre application n'est pas threadsafe, spécifiez un entrypoint en configurant un thread par nœud de calcul.

Par exemple, lorsque la classe d'instance F4 est utilisée :
entrypoint: gunicorn -b :$PORT -w 8 --threads 1 main:app

Consultez la page Bonnes pratiques relatives à entrypoint pour connaître le nombre de nœuds de calcul recommandé pour chaque classe d'instance.
bibliothèques N'est plus compatible. Utilisez le fichier requirements.txt pour déclarer les dépendances et installer les bibliothèques clientes.
handlers: login Compatible si app_engine_apis est true Si vous n'utilisez pas les anciens services groupés pour Python 3, utilisez Identity and Access Management (IAM) pour la gestion des utilisateurs.
handlers: script Modifié Dans l'environnement d'exécution Python 2, vous utilisez le champ script pour acheminer les requêtes entrantes vers le script de votre application.

Dans l'environnement d'exécution Python 3, vous devez utiliser un framework Web avec routage intégré à l'application (tel que Flask ou Django) au lieu du champ script.

Pour migrer votre fichier app.yaml vers l'environnement d'exécution Python 3, effectuez l'une des opérations suivantes, selon que le fichier contient ou non des gestionnaires d'éléments statiques et des gestionnaires de scripts :

  • Si votre fichier app.yaml contient des gestionnaires d'éléments statiques, effectuez l'une des opérations suivantes pour vous assurer que les requêtes de contenu dynamique sont acheminées vers le script de votre application :
    • Supprimez tous les champs script. Ajoutez ensuite un champ entrypoint pour démarrer un serveur Web qui exécute votre application. Les requêtes qui ne correspondent à aucun de vos gestionnaires d'éléments statiques sont dirigées vers le serveur Web que vous avez spécifié dans le champ entrypoint. Le serveur Web et le framework Web de votre application sont chargés d'acheminer la requête vers le script approprié.
    • Remplacez la valeur de tous les champs script par auto. App Engine exécute automatiquement votre application sur un serveur Web (à condition qu'elle respecte quelques conditions requises), et toutes les requêtes correspondant à un gestionnaire de script sont dirigées vers le serveur Web. Le serveur Web et le framework Web de votre application sont chargés d'acheminer la requête vers le script approprié.
    • Si votre fichier app.yaml ne contient pas de gestionnaires d'éléments statiques, supprimez tous les champs script. Toutes les requêtes adressées à votre application sont dirigées vers le serveur Web de votre application, et le framework de votre application achemine la requête vers le script approprié. Vous pouvez éventuellement ajouter un champ entrypoint pour personnaliser le comportement de démarrage par défaut. Si votre fichier app.yaml comporte les deux types de gestionnaires, vous pouvez toujours supprimer tous les gestionnaires de scripts marqués comme auto, en laissant les gestionnaires statiques ainsi que les gestionnaires auto nécessitant d'autres instructions, telles que le gestionnaire réservé aux administrateurs dans l'exemple ci-dessous.

La gestion des fichiers statiques reste inchangée.

Si vous utilisez l'un des champs obsolètes, App Engine renvoie une erreur lors du déploiement de l'application.

Vous pouvez utiliser les exemples suivants pour comparer les différences entre les fichiers app.yaml:

Python 2

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /
  script: home.app

- url: /index\.html
  script: home.app

- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /admin/.*
  script: admin.app
  login: admin

- url: /.*
  script: not_found.app

Python 3

runtime: python311
app_engine_apis: true

handlers:
- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /admin/.*
  script: auto
  login: admin

Supprimer appengine_config.py

Dans l'environnement standard App Engine, l'environnement d'exécution Python 2 utilise le fichier appengine_config.py.

Ce fichier est ignoré dans l'environnement d'exécution Python 3. Au lieu de cela, l'environnement d'exécution Python 3 utilise le fichier requirements.txt standard pour installer les dépendances, y compris les dépendances qui utilisent du code natif. Pour plus d'informations, consultez la section Spécifier les dépendances dans l'environnement d'exécution Python 3.