Préparer les fichiers de configuration pour l'environnement d'exécution Python 3
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Pour 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.
Mise à jour de 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.
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
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.yamlne 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.
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.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/04/21 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/04/21 (UTC)."],[[["\u003cp\u003eThe Python 3 runtime on App Engine standard environment requires updates to the \u003ccode\u003eapp.yaml\u003c/code\u003e file, while the \u003ccode\u003eappengine_config.py\u003c/code\u003e file is no longer used.\u003c/p\u003e\n"],["\u003cp\u003eSeveral fields in the \u003ccode\u003eapp.yaml\u003c/code\u003e file are no longer supported in Python 3, including \u003ccode\u003eapi_version\u003c/code\u003e, \u003ccode\u003eapplication_readable\u003c/code\u003e, \u003ccode\u003ebuiltins\u003c/code\u003e, \u003ccode\u003ethreadsafe\u003c/code\u003e, and \u003ccode\u003elibraries\u003c/code\u003e, each having different changes in requirements or methodology.\u003c/p\u003e\n"],["\u003cp\u003eIf using the legacy bundled services, the \u003ccode\u003eapp_engine_apis\u003c/code\u003e field in \u003ccode\u003eapp.yaml\u003c/code\u003e must be set to \u003ccode\u003etrue\u003c/code\u003e, and it enables the use of \u003ccode\u003ehandlers: login\u003c/code\u003e; otherwise, Identity and Access Management (IAM) should be used.\u003c/p\u003e\n"],["\u003cp\u003eIn Python 3, the \u003ccode\u003escript\u003c/code\u003e field in \u003ccode\u003eapp.yaml\u003c/code\u003e handlers is replaced by in-app routing using a web framework like Flask or Django, and the \u003ccode\u003eentrypoint\u003c/code\u003e field is used to start the web server, which will handle the routing.\u003c/p\u003e\n"],["\u003cp\u003eIn the Python 3 runtime, dependencies are installed using the standard \u003ccode\u003erequirements.txt\u003c/code\u003e file instead of the \u003ccode\u003eappengine_config.py\u003c/code\u003e file used in Python 2, meaning the latter file can be removed.\u003c/p\u003e\n"]]],[],null,["# Preparing configuration files for the Python 3 runtime\n\nBefore you can run your app in the Python 3 runtime of the App Engine standard environment, you\nmay need to change some of the configuration files that App Engine uses:\n\n- `app.yaml`. This file contains information about your app's code, such as the\n runtime and the app handlers.\n\n- `appengine_config.py`. The Python 2 runtime uses this file to access\n third-party libraries and provide values for constants and \"hook functions\".\n The Python 3 runtime doesn't use this file.\n\nUpdating `app.yaml`\n-------------------\n\nThe behavior of some fields in your\n[`app.yaml` configuration file](/appengine/docs/standard/reference/app-yaml#entrypoint)\nhas been modified. Remove any fields that are no longer supported and update\nother fields as described in the following table.\n\nIf you use any of the deprecated fields, App Engine returns an error\nwhen you deploy your app.\n\nYou can use the following examples to compare the differences between the\n`app.yaml` files: \n\n### Python 2\n\n```yaml\nruntime: python27\napi_version: 1\nthreadsafe: true\n\nhandlers:\n- url: /\n script: home.app\n\n- url: /index\\.html\n script: home.app\n\n- url: /stylesheets\n static_dir: stylesheets\n\n- url: /(.*\\.(gif|png|jpg))$\n static_files: static/\\1\n upload: static/.*\\.(gif|png|jpg)$\n\n- url: /admin/.*\n script: admin.app\n login: admin\n\n- url: /.*\n script: not_found.app\n```\n\n### Python 3\n\n runtime: python313\n app_engine_apis: true\n\n handlers:\n - url: /stylesheets\n static_dir: stylesheets\n\n - url: /(.*\\.(gif|png|jpg))$\n static_files: static/\\1\n upload: static/.*\\.(gif|png|jpg)$\n\n - url: /admin/.*\n script: auto\n login: admin\n\n| **Note:** For Python 3 the preferred WSGI-compatible web server is `gunicorn`. When you use the optional `entrypoint` field in your [`app.yaml`](/appengine/docs/standard/reference/app-yaml#runtime_and_app_elements) configuration file, the timeout for `gunicorn` defaults to 30 seconds. To set a custom timeout, update the `entrypoint` field: for example, `entrypoint: gunicorn -b :$PORT --timeout=600`. In this case, [make sure you\n| have included `gunicorn`](/appengine/docs/standard/python3/runtime#entrypoint_best_practices) in your `requirements.txt` file.\n\nRemoving `appengine_config.py`\n------------------------------\n\nThe Python 2 runtime in the App Engine standard environment uses the\n[`appengine_config.py`](/appengine/docs/legacy/standard/python/tools/using-libraries-python-27)\nfile.\n\nThis file is ignored in the Python 3 runtime. Instead, the Python 3 runtime\nuses the standard `requirements.txt` file to\n[install dependencies](/appengine/docs/standard/python3/specifying-dependencies),\nincluding dependencies that use native code."]]