O Python 2 não é mais compatível com a comunidade. Recomendamos que você migre aplicativos do Python 2 para o Python 3.

Como migrar para o ambiente de execução padrão do Python 3

A partir de 1º de janeiro de 2020, a comunidade do Python não atualizará mais o Python 2.7, nem corrigirá bugs ou problemas de segurança dele. Recomendamos que você migre os aplicativos que ainda estão em execução no ambiente de execução do Python 2 do ambiente padrão do App Engine para o ambiente de execução do Python 3 assim que possível. Para mais informações, consulte Suporte para Python 2 no Google Cloud.

Principais diferenças entre os ambientes de execução do Python 2 e do Python 3

A maioria das alterações que você precisa fazer durante a migração vem das seguintes diferenças entre os ambientes de execução do Python 2 e do Python 3:

Problemas de compatibilidade entre o Python 2 e o Python 3

Quando o Python 3 foi lançado pela primeira vez em 2008, várias alterações incompatíveis com versões anteriores foram introduzidas na linguagem. Algumas alterações exigem apenas pequenas atualizações no seu código, como a alteração da declaração print para uma função print(). Outras alterações podem exigir atualizações significativas no código, como atualizar a maneira como você lida com dados binários, texto e strings.

Muitas bibliotecas de código aberto conhecidas, incluindo as bibliotecas padrão do Python, também foram alteradas quando foram movidas do Python 2 para o Python 3.

Não há serviços incluídos do App Engine no ambiente de execução do Python 3

A partir do ambiente de execução do Python 3, o ambiente padrão do App Engine não inclui mais serviços do pacote do App Engine, como Memcache e Filas de tarefas. Em vez disso, o Google Cloud fornece produtos independentes que são equivalentes à maioria dos serviços incluídos no ambiente de execução do Python 2. Para os serviços incluídos que não estão disponíveis como produtos separados no Google Cloud, como processamento de imagens, pesquisa e mensagens, você pode usar provedores de terceiros ou outras soluções alternativas, conforme sugerido neste guia de migração.

A remoção dos serviços incluídos do App Engine permite que o ambiente de execução do Python 3 seja compatível com uma experiência de desenvolvimento Python totalmente idiomática. No ambiente de execução do Python 3, você cria um aplicativo Python padrão que é totalmente portátil e pode ser executado em qualquer ambiente padrão do Python, incaluindo o App Engine.

Estrutura da Web necessária para encaminhar solicitações de conteúdo dinâmico

No ambiente de execução do Python 2, é possível criar gerenciadores de URL no arquivo app.yaml para especificar qual aplicativo será executado quando um URL específico ou um padrão de URL for solicitado.

No ambiente de execução do Python 3, seu aplicativo precisa usar um framework da Web, como Flask ou Django, para encaminhar solicitações de conteúdo dinâmico em vez de usar gerenciadores de URL em app.yaml. Para conteúdo estático, é possível continuar a criar gerenciadores de URL no arquivo app.yaml do aplicativo.

Visão geral do processo de migração

Recomendamos a seguinte abordagem incremental para a migração, na qual você mantém um aplicativo funcional e testável durante todo o processo:

  1. Migre os serviços incluídos do App Engine no aplicativo Python 2 para serviços do Google Cloud, serviços de terceiros ou outras substituições recomendadas. Teste seu app depois de migrar cada serviço.

    Quando você concluir esta etapa, o aplicativo Python 2 não usará mais APIs google.appengine.

  2. Faça upgrade do seu aplicativo para que ele seja compatível com o Python 2 e o Python 3.

    Várias soluções estão disponíveis para ajudar nesse upgrade. Por exemplo, use Python-Future ou Python-modernize.

    Para mais informações sobre essa etapa do processo de migração, consulte Portabilidade do código do Python 2 para o Python 3 no site da documentação do Python Software Foundation.

  3. Prepare os arquivos de configuração do App Engine para o ambiente de execução do Python 3. Várias alterações importantes afetam as definições de configuração em app.yaml, incluindo, entre outros:

    • Agora, os apps são considerados threadsafe. Se o app não for threadsafe, será necessário fazer algumas alterações no arquivo app.yaml para evitar que isso aumente muito os custos.
    • O arquivo app.yaml não encaminha mais solicitações para os scripts. Em vez disso, é necessário usar um framework da Web com roteamento no aplicativo e atualizar ou remover todos os gerenciadores script em app.yaml.
  4. Teste e implante seu aplicativo atualizado em um ambiente do Python 3.

    Pode ser necessário gastar um bom tempo corrigindo problemas de compatibilidade que não são visíveis até que você execute o aplicativo de categoria mais alta em um ambiente Python 3.

    Após a aprovação de todos os testes, implante o aplicativo atualizado no App Engine, mas impeça que o tráfego seja roteado automaticamente para a nova versão. Use a divisão de tráfego para migrar lentamente o tráfego do aplicativo no ambiente de execução do Python 2 para o aplicativo no ambiente de execução do Python 3. Se você tiver problemas, encaminhe todo o tráfego para uma versão estável até que o problema seja corrigido.