Agendando tarefas com Python (schedule)

Publicado por Fábio Berbert de Paula em 12/06/2020

[ Hits: 16.961 ]

Blog: https://mestrefabio.com

 


Agendando tarefas com Python (schedule)



Estamos em um site de Linux e todos devem usar o cron para agendar suas tarefas correto? Pois bem, nessa dica trago uma alternativa ao programador, caso seja necessário agendar tarefas dentro de seus próprios códigos em Python.

Usaremos um módulo Python chamado schedule, que pode ser instalado com:

pip install schedule

ou

pip3 install schedule

Seu código é bem simples, basta você definir os métodos que precisa chamar e agendá-los, conforme exemplo abaixo:

vi agenda.py

import schedule
import time

def agua():
    print("Hora de beber água!!!")

def almoco():
    print("Hora do almoço!!!")

schedule.every().hour.do(agua)
schedule.every().day.at("12:00").do(almoco)

#looping infinito
#a cada 1 minuto (60 segs) verificar os jobs pendentes
while True:
    schedule.run_pending()
    time.sleep(60)

Colinha com algumas formas de uso de agendamento:

schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job)
schedule.every().minute.at(":17").do(job)

Fonte: https://schedule.readthedocs.io/en/stable/

Outras dicas deste autor

Juntar/unir linhas (JOIN) no VIM

Sincronizando o seu Palm no Linux

Monitorando tarefas com o comando watch

Copiando arquivos e diretórios ocultos com rsync

LPairs, O jogo da memória

Leitura recomendada

Criando repositório de módulos Python localmente

Erro ao rodar o IDLE no Python 3.0 b3

Preparando o Linux Mint 20 para instalar o Plugin coc.nvim no VIM

InstaPy: Error, unable to determine correct filename for 64bit linux [Resolvido]

ISO8583 em Python

  

Comentários
[1] Comentário enviado por virsinho99 em 30/09/2020 - 14:15h

Boa tarde.

Seria possível adicionar um parâmetro dentro desse método?
Por exemplo schedule.every().day.at("12:00").do(almoco(valores))
Pois preciso chamar uma função com um parâmetro todos os dias as 12h00.
Se não for possível, existe outra forma de chamar uma função com um parâmetro utilizando este método Schedule?

Att Gabriel Alves

[2] Comentário enviado por fabio em 30/09/2020 - 21:59h


[1] Comentário enviado por virsinho99 em 30/09/2020 - 14:15h

Boa tarde.

Seria possível adicionar um parâmetro dentro desse método?
Por exemplo schedule.every().day.at("12:00").do(almoco(valores))
Pois preciso chamar uma função com um parâmetro todos os dias as 12h00.
Se não for possível, existe outra forma de chamar uma função com um parâmetro utilizando este método Schedule?

Att Gabriel Alves


É possível sim, basta passar os argumentos separados por vírgula:

def almoco(valor1, valor2):
...
schedule.every().day.at("12:00").do(almoco, valor1, valor2)



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts