Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    • Por que escalar escrita é tão mais difícil do que escalar leitura?
    • MongoDB Analyzer para .NET: Visualize e otimize suas consultas de forma simples
    • Cardinalidade: O Conceito que Transforma o Desempenho de Bancos de Dados SQL e NoSQL
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Python»Agendando job em python no Heroku

    Agendando job em python no Heroku

    Rodrigo FerreiraBy Rodrigo Ferreira9 de maio de 20184 Mins Read Python
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

         Já fiz alguns posts sobre a dupla Python/Heroku. O motivo é que ambos tem se mostrado muito práticos e parceiros perfeitos até aqui, pelo menos na minha opinião e para os projetos que tenho feito. O post de hoje é para mostrar de uma forma rápida e prática com pegar aquele seu código python e agendar ele para executar a cada X minutos no Heroku. Vamos nessa? 

         Sem enrolação vamos nessa, a ideia é: quero colocar um código em python que fiz para executar a cada 3 minutos? E agora? Se hospedar no meu PC vou ter que deixar ele ligado o 24/7, não tenho grana para pagar uma hospedagem, o que fazer? Simples, cria uma conta no Heroku e cria um app lá dentro, vou pular esta parte pois senão o post fica gigante, partindo disso, siga os passos:

    1 INSTALAR MÓDULO APSCHEDULER

    pip install APScheduler==3.0.0
    
    

    2 CÓDIGO EM PYTHON

    O código que usei apenas exibi uma mensagem no console, criei um arquivo jobs.py, fique a vontade para ser criativo:

    from apscheduler.schedulers.blocking import BlockingScheduler
    sched = BlockingScheduler()
    
    @sched.scheduled_job('interval', minutes=3)
    def timed_job():
      print('This job is run every three minutes.')
    
    sched.start()

     

    O import BlockingScheduler é apenas um dos 3 tipos possíveis e provavelmente o mais comum, se quiser conhecer os outros veja detalhes aqui. A linha mais importante é a

    @sched.scheduled_job('interval', minutes=3)

    É esta propriedade que prefixamos na função “timed_job” que determina a frequencia de execução, nesse exemplo a cada 3 minutos. Mas poderia ser mais específico também:

    @sched.scheduled_job('cron', day_of_week='mon-wed', hour=14)
    def scheduled_job():
       print('Este job roda de Segunda à Quarta as 2hrs da tarde.')

    3 PREPARAR APP PARA HEROKU

    Alguns requisitos precisam ser obedecidos antes subirmos nosso job pro heroku, 3 arquivos para ser mais exato:

    • runtime.txt: contém a versão do python que será executada no Heroku –> python-3.6.5.
    • requirements.txt: deve ficar as libs que devem ser isntaladas no Heroku –> APScheduler==3.0.0
    • Procfile: arquivo padrão de configuração do heroku usado apra determiar o tipo da aplicação e como será interpretada, o conteúdo é: clock: python jobs.py

    Obs: o nome “jobs.py” foi escolha minha, poderia ser outro, contanto que seja igual o arquivo.

    4 DEPLOY

         Essa parte da um trabalho mas vou tentar simplificar, existem 3 formas de deploy no heroku: via github, via dropbox ou CLI. Eu uso dropbox e recomendo para que possui porque é bem rápido, lembra que falei da praticidade correto? Ao acessar seu app no Heroku e clicar na aba “DEPLOY”, clique em Dropbox para fazer a integração com sua conta e voilá! Ele cria uma pasta no seu dropbox com o nome do app e basta jogar os arquivos lá:

    heroku1
    Painel do Heroku. Aba Deploy. Dropbox sincronizado.

       Feito isso jogue os arquivos na pasta do Dropbox que foi criada, nesse meu caso a pasta ficou com o nome “casadeleiloes-crawler”, espere terminar o upload. Role a página até embaixo e clique no botão roxo DEPLOY. Será mostrado o log de build, instalação das libs do arquivo requirements.txt e no final, se tudo correr bem, a mensagem “DONE”.

    5 SCALE VIA HEROKU CLI

    Parte mais chata, porém necessária, precisamos configurar mais uma coisa no Heroku, para isso usaremos a linha de comando:

    Baixe aqui o Heroku CLI. Instale.

    Faça o LOGIN:

    heroku login
    Enter your Heroku credentials.
    Email: [email protected]
    Password (typing will be hidden):
    Authentication successful.

    Agora vamos acessar nosso app criado e configurar no Dyno(server) para evitar múltiplas execuções simultâneas:

    heroku app:ps:scale clock=1 --app [nome_do_app]heroku2

     

    Tranquilo né? Você pode visualizar o log no canto direito superior do seu painel no Heroku, em “More” > “View logs”.

    heroku3.JPG

    Pronto! Lembrando que o plano free do Heroku dá um shutdown se seu app ficar mais de 30 minutos inativo. Caso deseje saber mais detalhes sobre os comando do CLI, acesse este link.

    Abraços e até próxima.

    Fonte: https://devcenter.heroku.com/articles/clock-processes-python

    heroku python
    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Rodrigo Ferreira
    • Website
    • X (Twitter)
    • LinkedIn

    Programador, apaixonado por games, empreendedor. Formado em Ciência da Computação com especialização em desenvolvimento para web, trabalhei com projetos .Net C#, NodeJs e Python nestes 10 anos de experiência no setor privado, em orgão públicos e na minha startup, o EstoqueMestre. http://rodrigoreisf.com.br

    Posts Relacionados

    Rodar um mini servidor web a partir de uma pasta

    Asp.net Dicas Mvc NodeJS Python 20 de abril de 20193 Mins Read

    Criando executável de um código python

    Python 3 de julho de 20182 Mins Read

    Conhece Linux – LAMP?

    Linux Post do Leitor 10 de setembro de 20179 Mins Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 25mil outros assinantes
    Posts recentes
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    Categorias
    • Arquitetura (14)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (90)
      • NoSql (58)
      • Sql (38)
    • Boas práticas (29)
      • Gestão & Produtividade (1)
      • Metodologias Ágeis (6)
    • Cursos (52)
    • Dicas (105)
    • Front-End (92)
    • IA (1)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    30 APIs Gratuitas para desenvolvedores

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile