Publicando seu Site ou API Rest com Flask em uma Máquina Windows com o Python 3.6(+)

novembro de 2021

Autor: Luigi Tavolaro – Embaixador FC Nuvem, Microsoft MVP e Líder das Comunidades Developers-BR e Azure Talks 

Nesse artigo irei demonstrar como publicar um site ou Api REST em Python no Web App do Azure. Lembrando que o foco do artigo não é exatamente como criar sites ou APIs Rest com o Python, mas ao longo dos artigos, vou avançando na utilização dos recursos e das bibliotecas e explicando um pouco sobre o Flask e como utilizá-lo. 

Para isso, será utilizado:  

Começamos da pergunta que mais escuto, por que Python? Se você também se perguntou isso, vou tentar responder rapidamente.  

Python é simples, leve, versátil, fácil de aprender, roda em todos os sistemas operacionais, e hoje, graças ao estudo do Data Science, é utilizado por muitas empresas, como já li em outros artigos, Python é o verdadeiro Canivete Suiço. 

O que é Flask? 

Flask é um micro-framework (um framework minimalista) desenvolvido em Python e baseado em 3 pilares: 

  1. WerkZeug é uma biblioteca para desenvolvimento de apps WSGI que é a especificação universal de como deve ser a interface entre um app Python e um web server. 
  1. Jinja2 é um template engine escrito em Python, você escreve templates utilizando marcações como {{ nome_da_variavel }} ou {% for nome in lista_de_nomes %} Hello {{nome}}!! {% endfor %} e o Jinja se encarrega de renderizar este template, ou seja, ele substitui os placeholders pelo valor de suas variáveis. 
  1. Good Intentions: O Flask é Pythonico! Além do código ter alta qualidade nos quesitos de legibilidade ele também tenta seguir as premissas do Zen do Python e dentro dessas boas intenções nós temos o fato dele ser um micro-framework deixando que você tenha liberdade de estruturar seu app da maneira que desejar.  

Então nós temos uma linguagem superpoderosa em mãos e um micro-framework que nos facilita começar com a parte Web em Python. 

Instale o Python em sua versão 3.6 ou 3.7, baixe em https://www.python.org/ no VS Code abra um novo Terminal 

Digite o Comando python -m pip install flask (1) 

O Pip é gerenciador de pacotes do Python, para quem esta familiarizado com o .NET, seria o Nuget do Python. 

O comando (1) instala o pacote Flask e suas dependências, isso significa que podemos já começar a utilizá-lo e ainda no VS Code pressione Ctrl+Shift+P e selecione a opção “Python: Selecionar Interpretador” 

Na etapa seguinte, selecione a versão 3.6 ou 3.7 do Python: 

No canto esquerdo, embaixo, deverá estar da seguinte maneira: 

Pronto, o VS Code está configurado para utilizar o Python. 

Abra um novo arquivo e digite: 

from flask import Flask, jsonify 

app = Flask(__name__) 

# Make the WSGI interface available at the top level so wfastcgi can get it. 

wsgi_app = app.wsgi_app 

@app.route(‘/’) 

def home(): 

   return ‘hello world’    

profissional = [ 

    { 

        ‘id’: 1, 

        ‘nome’: u’Luigi Tavolaro’, 

        ‘cargo’: u’Desenvolvedor’,  

        ‘idade’: 36 

    }, 

    { 

        ‘id’: 2, 

        ‘nome’: u’Douglas Pereira’, 

        ‘cargo’: u’RH’,  

        ‘idade’: 25 

    } 

@app.route(‘/api’, methods=[‘GET’]) 

def api_profissionais(): 

    return jsonify({‘profissional’: profissional})  

if __name__ == ‘__main__’: 

    app.run() 

Na linha 7, está definida a rota principal, onde irá funcionar minha aplicação WEB, e na linha 26, está a rota para a minha API. 

No VS Code: 

A aplicação está funcionando no localhost 

Postman retorna o resultado da API rodando via localhost 

Sua aplicação Flask já está funcionando, tanto a parte web, como a Api. 

Agora vamos para parte do Azure: 

Se você não tem uma conta no Azure, indico conhecer o programa Visual Studio Dev Essentials (https://visualstudio.microsoft.com/pt-br/dev-essentials/), tem diversos serviços gratuitos ou para experimentar. O Azure é um deles: “Conta gratuita do Azure (inclui um ano de serviços gratuitos, US$200 no primeiro mês)”, se você não tem um cartão de crédito internacional, pode criar uma conta no Nubank por exemplo.  

Abra o portal do Azure e clique em App Services: 

Clique nos itens destacados e insira o nome, o Resource Group, e o plano que será utilizado. 

Após criado o recurso, entre em seu WebApp e vá em configurações, na aba General Settings escolha a Stack, no caso Python: 

Clique no link Extensions: 

Escolha a versão 3.6.4 x64 do Python 

Aceite os termos legais: 

Pronto, agora temos o Python 3.6 instalado, a versão que já é predefinida no Web App é a 3.4, portanto é necessário fazer esse passo a passo: 

Clique em Advanced tools e posteriormente em Go

Abra o CMD para manipularmos o WebApp 

Agora abra o projeto KUDU, em que nos permite manipular algumas configurações do nosso Web App: 

Navegue até a pasta D:\home\python364x64: 

Executar o mesmo comando (1) do início do artigo: 

O Flask foi instalado no nosso WebApp: 

Lembrando que é uma configuração Windows Web App, portanto, estamos utilizando o IIS para funcionar a aplicação, precisamos então de um Web.config para as configurações da aplicação: 

<?xml version=”1.0″ encoding=”utf-8″?> 

<configuration> 

  <appSettings> 

    <add key=”WSGI_HANDLER” value=”main.app”/> 

    <add key=”PYTHONPATH” value=”D:\home\site\wwwroot”/> 

    <add key=”WSGI_LOG” value=”D:\home\LogFiles\wfastcgi.log”/> 

  </appSettings> 

  <system.webServer> 

<httpErrors errorMode=”Detailed”></httpErrors> 

    <handlers> 

      <add name=”PythonHandler” path=”*” verb=”*” modules=”FastCgiModule” scriptProcessor=”D:\home\Python364x64\python.exe|D:\home\Python364x64\wfastcgi.py” resourceType=”Unspecified” requireAccess=”Script”/> 

    </handlers> 

  </system.webServer> 

</configuration> 

Na linha 4 é necessário informar o arquivo principal, ou seja, qual deve ser executado, no caso, o arquivo do Flask é o main.py, portanto, na linha 4 deve estar o main.app, essa configuração é apenas para aplicações Flask. 

As demais linhas são configurações sobre caminho do Python e do FastCGI que é utilizado para executar o script. 

Agora vamos colocar a aplicação no repositório do Azure DevOps, entre em https://azure.microsoft.com/pt-br/services/devops/ 

É possível transferir os dados via ftp também, clique em novo projeto e informe nome e a descrição: 

Criado o repositório, vamos fazer o push do código, eu fiz via Web mesmo, mas você pode usar a ferramenta de Git que você preferir. 

Voltando ao Portal do Azure, dentro do seu WebApp: 

Clique em Deployment Center e logo após escolha o Azure Repos, vale destacar que poderia ser outros serviços como o GitHub ou até mesmo do OneDrive. 

Pronto, ao finalizar, será realizado automaticamente o Deploy da sua aplicação e para cada novo PR, o deploy será automático, sendo assim temos um início de CI/CD da aplicação. 

Referências 

http://pythonclub.com.br/what-the-flask-pt-1-introducao-ao-desenvolvimento-web-com-python.html 

https://docs.microsoft.com/pt-br/visualstudio/python/managing-python-on-azure-app-service?view=vs-2019

https://pt.wikipedia.org/wiki/Pip_(gerenciador_de_pacotes)


Compartilhe nas redes sociais Compartilhe nas redes.