You are on page 1of 19

16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

Implantando um aplicativo Flask no


Heroku
Ali Abdelaal

Payara Services
OPEN
No Nonsense Guide to the JVM

Introdução
Neste tutorial, você aprenderá como implantar um aplicativo Flask no Heroku. O
aplicativo pode ser tão simples quanto um aplicativo "Hello World" para uma plataforma
de monitoramento de mídia social!

Hoje em dia não existe empresa que não tenha um web app que a ajude a alcançar um
público maior, ou quem sabe prestar seus serviços por meio de um portal online.

Hoje você está prestes a aprender como fazer uma API usando o Flask como um
estudo de caso de como implantar seu aplicativo no Heroku.

Construindo uma API REST com Flask


No diretório do seu projeto, vamos começar criando um virtualenv :

$ python -m venv venv/

E vamos ativá-lo com o source comando:

$ source venv/bin/activate

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 1/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

Então, vamos usar pip para instalar as bibliotecas que vamos usar - flask para
construir o aplicativo e gunicorn como nosso servidor:

$ pip install flask

$ pip install gunicorn

Saiba como proteger seu código


Aprenda 7 dicas-chave para desenvolver aplicativos com riscos mínimos de segurança .

Payara Abrir

Nosso aplicativo será uma API simples que recebe um nome e retorna uma mensagem
de boas-vindas:

# app.py

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/getmsg/', methods=['GET'])

def respond():

# Retrieve the name from url parameter

name = request.args.get("name", None)

# For debugging

print(f"got name {name}")

response = {}

# Check if user sent a name at all

if not name:

response["ERROR"] = "no name found, please send a name."

# Check if the user entered a number not a name

elif str(name).isdigit():

response["ERROR"] = "name can't be numeric."

# Now the user entered a valid name

else:

response["MESSAGE"] = f"Welcome {name} to our awesome platform!!"

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 2/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

# Return the response in json format

return jsonify(response)

@app.route('/post/', methods=['POST'])

def post_something():

param = request.form.get('name')

print(param)

# You can add the test cases you made in the previous function, but in our ca
if param:

return jsonify({

"Message": f"Welcome {name} to our awesome platform!!",

# Add this option to distinct the POST request

"METHOD" : "POST"

})

else:

return jsonify({

"ERROR": "no name found, please send a name."

})

# A welcome message to test our server

@app.route('/')

def index():

return "<h1>Welcome to our server !!</h1>"

if __name__ == '__main__':
# Threaded option to enable multiple instances for multiple user access suppo
app.run(threaded=True, port=5000)

Para testar seu aplicativo localmente, vamos acessar o terminal http://127.0.0.1:5000/ .


Se tudo estiver bem, devemos ser recebidos com uma mensagem de boas-vindas:

Também podemos enviar um nome como parâmetro, como


http://localhost:5000/getmsg/?name=Mark :

{"MESSAGE":"Welcome Mark to our awesome platform!!"}

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 3/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

Com nosso aplicativo pronto, vamos implantá-lo no Heroku .

Heroku
Heroku é uma das primeiras plataformas de nuvem como serviço (PaaS) e suporta
várias linguagens - Ruby, Java, Node.js, Scala, Clojure, Python, PHP e Go.

A primeira coisa que precisamos fazer é definir quais bibliotecas nosso aplicativo usa.
Dessa forma, o Heroku sabe quais fornecer para nós, semelhante à forma como os
instalamos localmente ao desenvolver o aplicativo.

Para conseguir isso, precisamos criar um requirements.txt arquivo com todos os


módulos:

$ pip freeze > requirements.txt

Dessa forma, acabamos com um requirements.txt arquivo que contém as bibliotecas


que estamos usando e suas versões:

Click==7.0

Flask==1.1.1

gunicorn==19.9.0

itsdangerous==1.1.0

Jinja2==2.10.1

MarkupSafe==1.1.1

Werkzeug==0.15.6

Nota: Um dos erros comuns é o erro de ortografia dos requisitos, é muito chato quando
você depura seu código por horas e descobre que o aplicativo não roda porque o
servidor não baixou os módulos. A única maneira do Heroku saber os módulos que
você está usando é adicioná-los ao requirements.txt arquivo, então tome cuidado!

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 4/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

No Nonsense Guide to the JVM


This no nonsense guide explores the positives & negatives of OpenJDK,
GraalVM and OpenJ9.

Payara Services Open

Para que o Heroku possa executar nosso aplicativo como deveria, precisamos definir
um conjunto de processos/comandos que ele deve executar previamente. Esses
comandos estão localizados em Procfile :

web: gunicorn app:app

O web comando diz ao Heroku para iniciar um servidor web para o aplicativo, usando
gunicorn . Como nosso aplicativo é chamado app.py , definimos o app nome app como
também.

Conta Heroku

Agora, devemos criar uma conta Heroku .

Quando isso estiver fora do caminho, no painel, selecione Novo -> Criar novo
aplicativo :

Escolha um nome para o aplicativo e escolha uma região onde você gostaria de
hospedá-lo:

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 5/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

Depois que o aplicativo for criado no Heroku, estaremos prontos para implantá-lo
online.

Git

Para fazer o upload do nosso código, usaremos o Git . Primeiro, vamos fazer um
repositório git:

$ git init .

E agora, vamos adicionar nossos arquivos e commit :

$ git add app.py Procfile requirements.txt

$ git commit -m "first commit"

Como implantar o aplicativo no Heroku

Para finalmente implantar o aplicativo, precisaremos instalar o Heroku CLI com o qual
executaremos os comandos relacionados ao Heroku. Vamos fazer login em nossa
conta usando nossas credenciais executando o comando:

$ heroku login -i

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 6/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

E-book gratuito: Git Essentials


Confira nosso guia prático e prático para aprender Git, com práticas
recomendadas, padrões aceitos pelo setor e folha de dicas incluída. Pare de
pesquisar comandos Git no Google e realmente aprenda !

Baixe o e-book 

Alternativamente, podemos fazer login usando o navegador se executarmos o


comando:

$ heroku login

Neste ponto, estando logado, devemos adicionar nosso repositório ao remoto:

$ heroku git:remote -a {your-project-name}

Certifique-se de substituir {your-project-name} pelo nome real do seu projeto


selecionado na etapa anterior.

E com isso feito, vamos fazer o upload do projeto enviando -o para o Heroku:

$ git push heroku master

Um longo log de progresso deve aparecer no seu terminal, terminando com:

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 7/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

...

remote: -----> Discovering process types

remote: Procfile declares types -> web

remote:

remote: -----> Compressing...

remote: Done: 45.1M

remote: -----> Launching...

remote: Released v4

remote: https://{your-project-name}.herokuapp.com/ deployed to Heroku

remote:

remote: Verifying deploy... done.

To https://git.heroku.com/{your-project-name}.git

ae85864..4e63b46 master -> master

Parabéns, você carregou com sucesso seu primeiro aplicativo da web para o Heroku!
Agora é hora de testar e verificar nossa API.

Testando a API
No log que foi mostrado no console, você encontrará um link para seu aplicativo
https://{your-project-name}.herokuapp.com/ , este link também pode ser encontrado
na guia Configurações , na seção Domínios e certificados :

Acessando o link, podemos acessar nosso aplicativo, que já está online e público:

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 8/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

Guia No Nonsense para a JVM


Saiba mais rapidamente sobre essas implementações populares de Java Virtual Machine

Serviços Payara Abrir

Caso haja algum erro, você pode acessar os logs e solucionar problemas a partir daí:

Você pode testar manualmente seu aplicativo no navegador, digitando a URL e


adicionando o caminho para a /getmsg/ rota. No entanto, como os aplicativos tendem a
ficar cada vez mais complexos, é aconselhável usar ferramentas como o Postman .

Agora vamos testar a GET requisição para nossa aplicação com um name parâmetro:

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 9/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

Agora vamos testar uma URL que não está vinculada a nenhuma função, como por
exemplo /newurl , com uma solicitação GET:

Como esperado, nosso aplicativo Flask retornou uma resposta 404.

Observação: você pode alterar a exibição da saída de Pretty , Raw e Preview , que
mostra como a saída ficaria em seu navegador.

Agora vamos testar uma POST solicitação:

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 10/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

Além disso, vamos ver o que acontece se omitirmos completamente o name parâmetro:

{"ERROR":"no name found, please send a name."}

Testamos nosso aplicativo e confirmamos que tudo está funcionando bem. Para ver o
histórico do seu servidor e quais solicitações foram feitas, você pode verificar os logs do
seu site via Heroku:

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 11/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

Pode ver aqui o POST pedido que fizemos à nossa página /post/ .

Além disso, você pode ver o histórico de construção do aplicativo. Além disso, se
houver algum problema durante a construção, você poderá encontrá-lo na página de
log.

Conclusão
Neste artigo mostramos um exemplo simples de como construir nossa primeira API
simples no Heroku usando o microframework Flask. O processo de desenvolvimento
permanece o mesmo enquanto você continua construindo seu aplicativo.

Heroku oferece um plano gratuito e planos para estudantes. O plano gratuito é limitado,
mas funciona muito bem para um aplicativo inicial, POC ou um projeto simples, por
exemplo. No entanto, se você deseja dimensionar seu aplicativo, considere um dos
planos disponíveis no site aqui .

Para mais informações sobre o Heroku você pode conferir o próprio manual do Heroku .

#Pitão #estrutura da web #frasco #heróiku


Última atualização: 4 de dezembro de 2019

Esse artigo foi útil?

Você pode gostar também...

Uma breve olhada no desenvolvimento da Web em Python


Aplicativos de página única com Vue.js e Flask: API RESTful com Flask
Construindo um aplicativo Todo com Flask em Python
Flask vs Django
Implantando aplicativos Django no Heroku do GitHub

Melhore suas habilidades de


https://stackabuse.com/deploying-a-flask-application-to-heroku/ 12/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

desenvolvimento!
Receba tutoriais, guias e trabalhos de desenvolvimento em sua caixa de
entrada.

Digite seu e-mail

Inscrever-se

Nenhum spam nunca. Cancele a inscrição a qualquer momento. Leia nossa Política de
Privacidade.

Autor de Ali Abdelaal

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 13/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

9 Comments 
1 Login

Join the discussion…

LOG IN WITH
OR SIGN UP WITH DISQUS ?

Name

Sort by Best  1 ⥅

Todd Flanders • 3 years ago


It seems the build pack wants Procfile, not Procfile.txt
4△ ▽ • Reply • Share ›

Oliver Henry Boettcher Scott > Todd Flanders • 3 years ago


yea great catch. hope the author updates this article
3△ ▽ • Reply • Share ›

David Landup > Oliver Henry Boettcher Scott • 3 years ago


Hey, editor here. Thank you for noticing the issue! The article is updated. :)
1△ ▽ • Reply • Share ›

Grego • 2 years ago


Awesome. That helped me a lot, thanks!
△ ▽ • Reply • Share ›

Brho 🍪🐰 • 2 years ago


hey, the bit about the procfile isn't really working for me i think, i'm getting an error H14
desc="No web processes running" method=GET path="/favicon.ico" ⛺ View — uploads.disquscdn.com
△ ▽ • Reply • Share ›

gourab yousuf basir • 2 years ago


In the post_something() function the line-

"Message": f"Welcome {name} to our awesome platform!!",

should be -

"Message": f"Welcome {param} to our awesome platform!!",

Very useful tutorial. Thanks 🙂


△ ▽ • Reply • Share ›

Ek OP > gourab yousuf basir • 2 years ago


This is really important! If you don't fix this, Postman will return a 500 internal server
error, which is very unhelpful. Thank you @gourab yousuf basir for posting the solution.
△ ▽ • Reply • Share ›

mzah • 3 years ago • edited


Thanks a lot this was quite helpful

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 14/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku
i ran into a couple of problems so a few additional points for those who are implementing for the
first time

1) avoid using anaconda as it causes some issues instead use virtual env as shown in the
tutorial

2) the Procfile is created (in the same directory as app.py using the command line) with

echo "web: gunicorn app:app" > Procfile

3) Heroku seems to have some problem with specifying the port number directly so replace last
line of app.py with

app.run(threaded=True, port = int(os.environ.get('PORT', 5000)))

△ ▽ • Reply • Share ›

dbf • 3 years ago


Hey, thanks for your effort in write and sharing the tutorial.

However the heroku file isn't Procfile.txt, is simply Procfile. Also, you didn't referee that is
necessary a runtime.txt with the python version, so heroku knows that is a python app.

For more general information about deploying python app with heroku:

https://devcenter.heroku.com/articles/getting-started-with-python#deploy-the-app
△ ▽ • Reply • Share ›

✉ Subscribe 🔒 Privacy ⚠ Do Not Sell My Data

TODOS OS JOGOS
AO VIVO
SÓ POR R$14,16/MÊS*

ASSINE AGORA

VERIFIQUE A CLASSIFICAÇÃO INDICATIVA.


*Valor do plano Mobile. Oferta disponível somente com o pagamento anual antecipado.
© 2022 WarnerMedia Direct Latin America, LLC. Todos os direitos reservados. HBO Max é usado
sob licença.

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 15/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

Curso

Visualização de dados em Python com Matplotlib e Pandas


#Pitão #pandas #matplotlib

Visualização de dados em Python com Matplotlib e Pandas é um curso projetado para


iniciantes absolutos em Pandas e Matplotlib, com conhecimento básico de Python e...

David Landup Detalhes

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 16/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

O Rei do Rock chegou

Conheça a história de Elvis. Vale até dançar


junto! Assine agora.

Assine Agora

Anúncio do
HBO MAX

Quer um trabalho remoto?

Desenvolvedor React Sênior


Topo há 5 meses

Engenheiro chefe
Benefício 7 meses atrás

Engenheiro de dados - EUA e Canadá


https://stackabuse.com/deploying-a-flask-application-to-heroku/ 17/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

Kraken Digital Asset Exchange 7 meses atrás

Pesquisa Aplicada do Cientista de Dados, Modo de Conteúdo...

Scribd 7 meses atrás

  Mais empregos Empregos por HireRemote.io

ara
arayaP
Mantenha seu
aplicativos
seguros
Payara

Abrir

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 18/19
16/10/2022 23:25 Implantando um aplicativo Flask no Heroku

© 2013-2022 Stack Abuse. Todos os direitos reservados.


Termos de Privacidade de Divulgação

https://stackabuse.com/deploying-a-flask-application-to-heroku/ 19/19

You might also like