$ python modulo_7.py

Agendamento e deploy

Rodar scripts automaticamente todos os dias e colocar em produção com Docker. Do cron clássico ao container isolado.

O que você vai aprender

1. Cron clássico

# editar crontab
crontab -e

# todo dia às 6h
0 6 * * * /home/user/proj/.venv/bin/python /home/user/proj/job.py >> /var/log/job.log 2>&1

# a cada 15 minutos
*/15 * * * * /path/to/python /path/to/script.py

2. schedule em Python

import schedule
import time

def job():
    print("Executando job...")

schedule.every().day.at("06:00").do(job)
schedule.every(15).minutes.do(job)

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

3. Dockerfile para automação

Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "job.py"]
docker build -t irn-job .
docker run --rm -v $(pwd)/dados:/app/dados --env-file .env irn-job

4. docker-compose

version: "3.8"
services:
  job:
    build: .
    env_file: .env
    volumes:
      - ./dados:/app/dados
      - ./logs:/app/logs
    restart: unless-stopped
SECRETS Nunca coloque senhas no código ou no Dockerfile. Use .env (e não faça commit dele) ou secrets do orquestrador.
EXERCÍCIO 1. Agende o scraper do módulo 2 para rodar diariamente via cron.
2. Containerize o script e rode com volume para persistir o JSON.
3. Adicione envio de e-mail em caso de exceção não tratada.

Sumário do curso

Precisa de algo assim, sob medida pro seu negócio?

agendar diagnóstico gratuito →