Blog

Postado em em 21 de setembro de 2023

Como Agendar Tarefas com Python Automaticamente

Quer aprender a agendar tarefas com Python automaticamente ? Na aula de hoje, vou te ensinar como fazer isso para qualquer período que você quiser.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Como Agendar Tarefas com Python Automaticamente

Na aula de hoje, vou te mostrar como agendar tarefas com Python automaticamente. Você aprenderá a agendar tarefas no Python a cada segundo, minuto, hora, dia ou semana, pelo período que achar necessário.

Com essa técnica, você poderá escolher e determinar um período específico para repetir uma tarefa ou uma automação já criada.

Será possível fazer o agendamento com horários personalizados, eliminando a necessidade de esperar por um horário específico. O Python fará o trabalho por você, mantendo sempre esse padrão.

No material disponível para download, você encontrará o gabarito com o código pronto para ser baixado e utilizado, mas durante esta aula, eu te mostrarei como construí-lo do zero!

Biblioteca Schedule no Python – Agendar Tarefas com Python

Para começarmos a construir nosso código, o primeiro passo será instalar a biblioteca Schedule no Python. Para isso, no terminal do seu editor de código, execute:

pip install schedule

Feito isso, podemos importar a biblioteca para o nosso código.

import schedule

Em seguida, precisamos criar uma função para a tarefa que desejamos executar várias vezes. Para o exemplo, irei definir uma função que imprime um texto na tela.

import schedule

def tarefa():
    print("Se inscreve no canal, não dá mole!")

Essa tarefa pode ser uma automação que você criou. Nesse caso, basta importá-la também para o código e substituir o print pela tarefa ou automação que deseja executar repetidamente.

Com a tarefa definida, precisamos chamar o módulo schedule e definir de quanto em quanto tempo ela precisa ser executada. Para isso, utilizaremos o método every(). Em seguida, definiremos o intervalo de tempo desejado e chamaremos o método do() passando nossa função como parâmetro.

import schedule

def tarefa():
    print("Se inscreve no canal, não dá mole!")

schedule.every().second.do(tarefa)

Também precisamos criar um looping para que esse código seja executado continuamente. Caso contrário, ele executará apenas uma vez e não repetirá. Faremos isso criando um while que chama o módulo schedule e o método run_pending() para executar todas as tarefas pendentes.

Por fim, a documentação da biblioteca schedule recomenda adicionar um time.sleep() ao final do código, com duração de pelo menos 1 segundo. Isso evita que o Python execute o código muito rapidamente, sem intervalos, e consuma muita memória do computador.

import schedule
import time

def tarefa():
    print("Se inscreve no canal, não dá mole!")

schedule.every().second.do(tarefa)

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

Executando esse código, a mensagem “Se inscreva no canal, não dá mole!” será exibida a cada 1 segundo.

Tarefa sendo executada automaticamente - Agendar Tarefas com Python

Agora que você já compreendeu como a base do Schedule funciona, vamos aprender a personalizá-lo passando alguns parâmetros e métodos. Isso nos permitirá definir o intervalo de tempo e os horários em que queremos executar nossa tarefa.

Dentro do método every(), podemos definir o intervalo de tempo desejado. Por exemplo, se quisermos que a tarefa seja executada a cada 5 segundos, poderíamos escrever essa linha de código da seguinte forma:

schedule.every(5).seconds.do(tarefa)

Note que, ao adicionar o parâmetro 5, o termo second também precisa passar para o plural, tornando-se seconds.

Essa estrutura funciona para a lógica que você desejar, com segundos, minutos, horas, dias ou semanas. Lembre-se de declarar esses termos em inglês.

Também é possível determinar o horário em que queremos que nossa tarefa seja executada. Para isso, precisamos usar o método at(). Por exemplo, se desejamos executar nossa tarefa todos os dias às 9 horas da manhã, podemos fazer desse modo:

schedule.every().day.at("09:00").do(tarefa)

Ou, podemos definir que a tarefa seja executada a cada hora, no minuto 20:

schedule.every().hour.at(":20").do(tarefa)

É importante ressaltar que o Schedule trabalha com base no horário local. Portanto, se você estiver executando o código diretamente do seu computador, ele seguirá o horário do seu computador. Caso esteja sendo executado em um servidor, ele utilizará o fuso horário do servidor.

Outra personalização interessante que podemos fazer ao agendar tarefas com Python e Schedule é através do método until(). Ele nos permite definir um horário limite para que a tarefa seja repetida. Por exemplo, podemos definir que a tarefa seja executada a cada hora, até às 17 horas.

schedule.every().hour.until("17:00").do(tarefa)

Além de passar os horários no formato de texto, como fizemos até agora, também podemos associar essa biblioteca com a biblioteca datetime, que nos permite controlar datas e horas. Importaremos o método time dessa biblioteca e renomearemos a biblioteca time como tm, para evitar conflitos entre as duas bibliotecas.

Com a biblioteca datetime, podemos construir um horário limite completo, com horas, minutos e segundos. Por exemplo, podemos definir que a tarefa seja executada até as 14 horas, 22 minutos e 10 segundos.

import schedule
import time as tm
from datetime import time

def tarefa():
    print("Se inscreve no canal, não dá mole!")

schedule.every().second.until(time(14, 22, 10).do(tarefa)

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

Agendar Tarefas com Python usando Decorator

Existe também a possibilidade de fazermos essa mesma estrutura de agendamentos que vimos até agora, diretamente na função através do uso de decorators.

De forma resumida, um decorator é uma função que adiciona funcionalidades extras a outra função que está logo abaixo dele.

Dessa forma, utilizando decorators, podemos definir de forma direta os intervalos de tempo e execução desejados para as nossas tarefas. Essa abordagem facilita a organização, especialmente quando houver a necessidade de definir múltiplas automações no código.

Abaixo, temos um exemplo de como construir o nosso código utilizando decorators:

import schedule
import time as tm
from datetime import time
from schedule import repeat, every

@repeat(every().second)
def tarefa():
    print("Se inscreve no canal, não dá mole!")

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

Neste exemplo, utilizamos o decorator @repeat(every().second) para definir que a função tarefa() será repetida a cada segundo.

Dessa forma, podemos definir vários agendamentos de tarefas diretamente nas funções utilizando decorators, o que facilita a organização e permite a criação de múltiplas tarefas no mesmo código.

Conclusão – Como Agendar Tarefas com Python Automaticamente

Na aula de hoje, apresentei a você como agendar tarefas com Python automaticamente! Você aprendeu a programar a execução de automações e tarefas utilizando a biblioteca Schedule, permitindo que você defina períodos e horários personalizados para essas execuções.

Com essa biblioteca, você pode executar essas tarefas agendadas diretamente no seu computador, localmente. No entanto, o ideal é fazer o deploy da sua automação e do agendamento em um servidor, liberando assim o seu próprio computador para outros usos.

A biblioteca Schedule é extremamente útil para agendar tarefas com Python e pode ser um excelente complemento para as automações que você está desenvolvendo ou pretende desenvolver em Python!

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador