CodeGym /Curso Java /Python SELF PT /Usando a biblioteca schedule para executar tarefas agenda...

Usando a biblioteca schedule para executar tarefas agendadas

Python SELF PT
Nível 39 , Lição 4
Disponível

1. Introdução à biblioteca schedule

Nesta aula, como verdadeiros mestres do tempo, vamos aprender a agendar tarefas para que nosso código funcione quando quisermos. Prepare-se, hoje vamos domar o tempo!

A biblioteca schedule é um módulo leve para executar funções em horários definidos. Se o seu código precisa ser executado em horários específicos, como coletar dados todos os dias às 6 da manhã ou enviar lembretes diários, então a schedule é o que você precisa.

Aqui estão as principais vantagens do schedule:

  • Simplicidade: interface intuitiva, muito mais fácil de usar do que soluções padrão como cron ou threading.
  • Minimalismo: nada de funções desnecessárias — apenas o essencial.
  • Clareza: uso de uma linguagem quase natural para configurar os agendamentos.

Instalando a biblioteca

Para começar a trabalhar, é necessário instalar a biblioteca schedule. Como na maioria das bibliotecas em Python, usamos o pip:

Bash
pip install schedule

Agora que tudo está pronto, vamos mergulhar no mundo da automação e ver como o schedule pode transformar sua rotina.

Métodos principais da biblioteca schedule

A biblioteca schedule fornece métodos para configurar tarefas em diferentes horários e frequências:

  • every().day.at("HH:MM") — executa uma tarefa todos os dias em um horário específico.
  • every().hour — executa uma tarefa a cada hora.
  • every().minute — executa uma tarefa a cada minuto.
  • every().week.at("HH:MM") — executa uma tarefa toda semana em um horário específico.
  • every().monday.at("HH:MM") — executa uma tarefa às segundas-feiras em um horário específico.
  • every(10).seconds — executa uma tarefa a cada 10 segundos (ou qualquer outro intervalo de tempo).

2. Configurando tarefas recorrentes

Vamos começar com algo simples — agendamos uma função que será executada a cada hora. Vamos criar uma função simples que exibe uma mensagem de boas-vindas e agendá-la.

Exemplo: saudação a cada hora

Python

import schedule
import time

def say_hello():
    print("Oi! Estamos trabalhando na automação por hora.")

# Agendamos a função say_hello para ser executada a cada hora
schedule.every().hour.do(say_hello)

while True:
    # Executa todas as tarefas cujo horário chegou
    schedule.run_pending()
    time.sleep(1)

E é isso — seu primeiro script com schedule! Neste exemplo, usamos o método every().hour.do(say_hello) para dizer "Oi!" a cada hora. Interessante, né?

A chamada schedule.every().hour.do(say_hello) não executa a função say_hello, mas sim adiciona sua chamada ao agendamento. A execução real da função ocorrerá quando for o horário - ela será chamada com o código schedule.run_pending().

3. Configurando intervalos mais complexos

O que acontece se quisermos executar tarefas não apenas a cada hora, mas também, por exemplo, a cada 10 minutos ou em dias específicos da semana? O schedule suporta a maioria das expressões de tempo comuns, e você pode usá-las com a mesma facilidade.

Exemplo: tarefa a cada 10 minutos

Python

import schedule
import time

def task():
    print("Essa tarefa é executada a cada 10 minutos.")

# Agende a execução da tarefa a cada 10 minutos
schedule.every(10).minutes.do(task)

while True:
    schedule.run_pending() # Executa todas as tarefas cujo horário chegou
    time.sleep(1)

Exemplo: tarefa em dias específicos

Agora, vamos agendar uma tarefa para ser executada em dias específicos da semana, por exemplo, às segundas e quartas-feiras, mas apenas às 9 da manhã.

Python

import schedule
import time

def monday_wednesday_task():
    print("Essa tarefa é executada às segundas e quartas-feiras às 9 da manhã.")

# Executa a tarefa às segundas e quartas-feiras às 9 da manhã
schedule.every().monday.at("09:00").do(monday_wednesday_task)
schedule.every().wednesday.at("09:00").do(monday_wednesday_task)

while True:
    schedule.run_pending()
    time.sleep(1)

Como você pode ver, o schedule lida com diferentes expressões de tempo, incluindo dias da semana e horários específicos de execução. Isso é incrivelmente conveniente para planejar tarefas sincronizadas com seu trabalho ou eventos agendados.

4. Lidando com tarefas com diferentes condições de tempo

Se seu script executa várias tarefas, e cada uma delas tem seu próprio cronograma, o schedule pode lidar com isso facilmente. Por exemplo, uma tarefa pode ser executada todas as manhãs, e outra — às sextas-feiras.

Exemplo: combinando diferentes tarefas em um único script

Python

import schedule
import time

def morning_task():
    print("Bom dia! Hora de fazer a tarefa matinal.")

def friday_task():
    print("Sexta-feira chegou! Hora da tarefa de sexta-feira.")

# Tarefas matinais todos os dias às 7:30
schedule.every().day.at("07:30").do(morning_task)

# Tarefas de sexta-feira todas as sextas às 16:00
schedule.every().friday.at("16:00").do(friday_task)

while True:
    schedule.run_pending()
    time.sleep(1)

Dicas práticas e erros comuns

Quando se trata de automatizar tarefas com o schedule, há alguns pontos importantes a serem lembrados.

Primeiro, lembre-se de que o schedule executa tarefas na thread principal. Isso significa que, se sua tarefa for longa ou puder bloquear a execução de outras tarefas, vale a pena considerar o uso de multithreading ou chamadas assíncronas para as tarefas.

Segundo, se sua tarefa precisa ser executada em um horário estrito e isso é crítico, certifique-se de que seu dispositivo está ligado e o script em execução. O schedule não funcionará se o script estiver parado ou o dispositivo desligado.

Por fim, a suposição mais comum — esperar que o schedule possa compensar tarefas perdidas. Infelizmente, se seu script não estava em execução quando a tarefa deveria ter sido executada, o schedule não executará a tarefa retroativamente.

1
Опрос
Trabalhando com Datas e Horas,  39 уровень,  4 лекция
недоступен
Trabalhando com Datas e Horas
Trabalhando com Datas e Horas
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION