1
resposta

[Sugestão] Correção do código apresentado na aula

Se tratando de um curso que teve a ultima atualização em março/2022, ao tentar replicar hoje a implementação da API em uma App Engine do Google Cloud, o arquivo de configuração da aula, app.yaml, não funciona.

Este é o código do app.yaml apresentado na aula:

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
    python_version: 3

includes:
- env_vars.yaml

Ele sempre vai apontar que a versão do python não é mais suportada pelo App Engine. Testei todas (3.8, 3.9, 310, 311, 313), de todas maneiras que tive ideia de fazer sentido, e o erro persistiu.

Aqui vão os pontos que apurei, e acredito que sejam os motivos pelos quais isso não funciona mais:

python_version: 3 é inválido em env: flex, para env: flex, a configuração python_version não tem efeito. O campo runtime_config com python_version só é válido no ambiente standard

runtime: python está incorreto para env: flex, então se a gente for usar env: flex, o valor aceito para runtime precisa ser um runtime Docker-based conhecido, então o python sozinho não vai ser valor suportado ou atualizado desse jeito

Ou seja, se não usarmos um Dockerfile, e ainda sim definimos runtime: custom com env: flex, o deploy vai falhar.

Da pra fazer um Dockerfile e continuar usando o flex, mas já fugiria do escopo da aula, que é trazer essa solução com mais simplicidade.

Minha Solução

Passei o Environment da aplicação de Flex para Standard. A diferença é basicamente que o environment Flex é feito em containers Docker, ideal para apps pesados, com uso intensivo de CPU, tem melhor escala e podemos definir o ambiente com acesso root total.

Mas, no nosso contexto da aula, não precisamos de nada disso, então o environment Standard atende com tranquilidade.

runtime: python313
entrypoint: gunicorn -b :$PORT main:app

handlers:
- url: /.*
  script: auto

includes:
- env_vars.yaml

Assim, a API vai rodar sem problemas.

1 resposta

Ei, Adan! Tudo bem?

Muito obrigada por compartilhar sua solução com a comunidade! Realmente, sobre a incompatibilidade do Ptyhon podemos consultar na documentação que o suporte para algumas versões foi e estão sendo descontinuadas. E ainda na documentação, podemos ver a especificação do runtime: python313 é a mais atualizada para versões recentes do Python.

A sua solução com certeza ajudará outros(as) colegas aqui no curso.

Continue se dedicando aos estudos e qualquer dúvida, compartilhe no fórum.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!