pnclFEED Chave gratuita

Notas de quickstart

Rode seu script de odds a cada 15 minutos com cron

Uma entrada no cron a cada 15 minutos roda sua busca 96 vezes ao dia, dentro da cota da chave gratuita. Transforme o loop em uma execução única e agende.

A chave gratuita da API de odds da Pinnacle permite 100 requisições por dia, e o quickstart de Python já nota que uma chamada a cada 15 minutos cabe nela o dia inteiro. O jeito mais limpo de manter esse ritmo não é um loop dormindo, mas o cron: 96 execuções por dia, cada uma uma única busca, sem processo para vigiar.

De loop a execução única

O script do quickstart faz polling num loop while com um sleep no fim. Para o cron, inverta: uma execução faz uma busca e sai. Guarde o cursor do valor last de cada resposta num arquivo pequeno, leia na inicialização, e a próxima execução o envia como since, então toda execução depois da primeira busca só o que mudou.

import json, os, requests

BASE, KEY = os.environ["ODDS_BASE_URL"], os.environ["ODDS_API_KEY"]
CURSOR = "/opt/odds/cursor.txt"

since = open(CURSOR).read().strip() if os.path.exists(CURSOR) else None
params = {"sport_id": 2}
if since:
    params["since"] = since
r = requests.get(BASE + "/kit/v1/markets", params=params,
                 headers={"x-portal-apikey": KEY}, timeout=10)
r.raise_for_status()
data = r.json()
open(CURSOR, "w").write(str(data["last"]))
for ev in data["events"]:
    print(ev["home"], "v", ev["away"])

Uma execução que falha num 429 simplesmente sai: a próxima execução agendada é a nova tentativa, o que combina com a regra do quickstart de aguardar o período do Retry-After em vez de insistir.

A entrada no cron

Três linhas no crontab definem o ambiente e a agenda:

ODDS_BASE_URL=https://your-base
ODDS_API_KEY=your-key
*/15 * * * * flock -n /tmp/odds.lock /usr/bin/python3 /opt/odds/fetch.py >> /var/log/odds.log 2>&1

Os detalhes que mordem: o cron roda com um ambiente mínimo, então exporte as variáveis no próprio crontab; use caminhos completos para o interpretador e o script; e envolva a execução em flock para que uma execução lenta nunca se sobreponha à próxima.

Observe o log, não o processo

Sem daemon, o arquivo de log é a checagem de saúde. Imprima uma linha por execução com a contagem de eventos, e um dia cheio de linhas diz que a agenda funciona. Se o log parar de crescer, o cron é o primeiro lugar a olhar: um caminho errado ou uma variável ausente falha em silêncio às 3 da manhã.

Quando o cron deixa de servir

Cron serve a qualquer coisa que possa rodar e sair. No momento em que você precisa de preços mais rápido que uma vez por minuto, ou quer quedas empurradas para você, o formato muda: o stream de quedas é uma conexão mantida aberta, que pertence a um serviço, não a um crontab. O quickstart mostra os dois formatos, e a página de preços lista as cotas dentro das quais cada um roda, verificado em 2026-10-02.

Uma busca por execução, 96 execuções por dia, zero daemons. Cron é o menor agendador que mantém um orçamento de chave gratuita honesto.