La compatibilité de Python 2 n'est plus assurée par la communauté. Nous vous recommandons de migrer les applications Python 2 vers Python 3.

Migrer vers l'environnement d'exécution standard Python 3

À compter du 1er janvier 2020, la communauté Python ne mettra plus à jour Python 2.7. Elle ne corrigera plus ses bugs éventuels et ne réglera plus les problèmes de sécurité qui y sont liés. Nous vous recommandons de migrer les applications qui s'exécutent encore dans l'environnement d'exécution Python 2 de l'environnement standard App Engine vers l'environnement d'exécution Python 3 dès que possible. Pour en savoir plus, consultez la page Compatibilité de Python 2 avec Google Cloud.

Principales différences entre les environnements d'exécution Python 2 et Python 3

La plupart des modifications à effectuer lors de la migration sont dues aux différences suivantes entre les environnements d'exécution Python 2 et Python 3 :

Problèmes de compatibilité entre Python 2 et Python 3

Lorsque Python 3 a été lancé en 2008, plusieurs modifications incompatibles avec les versions antérieures ont été introduites dans le langage. Certaines de ces modifications ne nécessitent que des mises à jour mineures de votre code, telles que changer l'instruction print en fonction print(). D'autres modifications peuvent nécessiter des mises à jour importantes de votre code, telles que la manière dont vous gérez les données binaires, le texte et les chaînes.

En outre, de nombreuses bibliothèques Open Source largement utilisées, y compris les bibliothèques standards Python, ont été modifiées lors du passage de Python 2 à Python 3.

Pas de services App Engine groupés dans l'environnement d'exécution Python 3

À partir de l'environnement d'exécution Python 3, l'environnement standard App Engine n'inclut plus les services App Engine groupés tels que Memcache et les files d'attente de tâches. À la place, Google Cloud fournit des produits autonomes équivalents à la plupart des services fournis dans l'environnement d'exécution Python 2. Pour les services groupés qui ne sont pas disponibles en tant que produits distincts dans Google Cloud, tels que le traitement des images, la recherche et la messagerie, vous pouvez faire appel à des fournisseurs tiers ou à d'autres solutions, comme indiqué dans ce guide de migration.

Grâce à la suppression des services App Engine groupés, l'environnement d'exécution Python 3 offre une expérience de développement Python entièrement idiomatique. Dans l'environnement d'exécution Python 3, vous écrivez une application Python standard entièrement portable et pouvant s'exécuter dans n'importe quel environnement Python standard, y compris App Engine.

Framework Web nécessaire pour acheminer les requêtes au contenu dynamique

Dans l'environnement d'exécution Python 2, vous pouvez créer des gestionnaires d'URL dans le fichier app.yaml pour spécifier l'application à exécuter lorsqu'une URL ou un format d'URL spécifique est demandé.

Dans l'environnement d'exécution Python 3, votre application doit utiliser un framework Web tel que Flask ou Django pour acheminer les requêtes au contenu dynamique au lieu d'utiliser des gestionnaires d'URL dans app.yaml. Pour le contenu statique, vous pouvez continuer à créer des gestionnaires d'URL dans le fichier app.yaml de votre application.

Présentation du processus de migration

Nous recommandons l'approche incrémentielle suivante pour la migration. Elle vous permet de maintenir une application fonctionnelle et testable tout au long du processus :

  1. Migrez les services groupés App Engine de votre application Python 2 vers des services Google Cloud, des services tiers ou d'autres solutions de remplacement recommandées. Testez votre application après la migration de chaque service.

    Une fois cette étape terminée, votre application Python 2 ne doit plus utiliser d'API google.appengine.

  2. Mettez à jour votre application pour qu'elle soit compatible avec Python 2 et Python 3.

    Plusieurs solutions sont disponibles pour vous aider à effectuer cette mise à jour. Par exemple, vous pouvez utiliser Python-Future ou Python-Modernize.

    Pour plus d'informations sur cette étape du processus de migration, consultez la section Portage du code Python 2 vers Python 3 sur le site de documentation Python Software Foundation.

  3. Préparez les fichiers de configuration App Engine pour l'environnement d'exécution Python 3. Plusieurs modifications importantes ont une incidence sur les paramètres de configuration dans app.yaml. Cela concerne entre autres les points suivants :

    • Les applications sont désormais considérées comme étant "threadsafe" (capacité à fonctionner en mode multithread). Si votre application ne dispose pas d'une telle capacité, vous devez apporter des modifications à votre fichier app.yaml pour éviter des risques potentiels liés à une augmentation significative des coûts.
    • Le fichier app.yaml n'achemine plus les requêtes vers vos scripts. Vous devez utiliser un framework Web avec routage intégré à l'application et mettre à jour ou supprimer tous les gestionnaires script dans app.yaml.
  4. Testez et déployez votre application mise à jour dans un environnement Python 3.

    La correction des problèmes de compatibilité qui ne sont pas visibles tant que vous n'avez pas exécuté l'application mise à jour dans un environnement Python 3 peut demander un certain temps.

    Une fois tous vos tests réussis, déployez l'application mise à niveau sur App Engine, mais empêchez le trafic d'être automatiquement acheminé vers la nouvelle version. Utilisez la répartition du trafic pour migrer progressivement le trafic de votre application dans l'environnement d'exécution Python 2 vers l'application dans l'environnement d'exécution Python 3. Si vous rencontrez des problèmes, vous pouvez acheminer tout le trafic vers une version stable jusqu'à ce que le problème soit résolu.