Ir para o conteúdo

Variáveis de ambiente

Todas as variáveis do agrobr começam com AGROBR_. Nenhuma é obrigatória, exceto as credenciais das fontes que exigem cadastro (USDA, MapBiomas Alerta e a rota observacional do INMET).

Quando valem

Defina as variáveis antes de importar o agrobr. Em detalhe:

  • os timeouts (AGROBR_HTTP_TIMEOUT_*) e o usuário e a senha da CEASA são lidos na importação de cada cliente, exceto o teto do download do Comex Stat, lido a cada download;
  • a pasta e o nome do banco do CEPEA são lidos no primeiro uso do cache e valem até o fim do processo; a conexão com o banco abre e fecha a cada operação. Os outros caches (ZARC, ANEC, Acervo Fundiário, IBAMA, RNC e Agrofit) leem a pasta a cada consulta;
  • o limite de concorrência de uma fonte (AGROBR_HTTP_MAX_CONCURRENT_*) é lido no primeiro pedido a ela no processo;
  • as demais são lidas a cada chamada.

Cache e disco

Variável Padrão O que faz
AGROBR_CACHE_DIR ~/.agrobr/cache Pasta de todos os caches (o que vai para o disco). Vazia vale o padrão
AGROBR_CACHE_CACHE_DIR — Nome antigo de AGROBR_CACHE_DIR, aceito como alias. Com as duas definidas, vale AGROBR_CACHE_DIR; se apontarem para pastas diferentes, sai um UserWarning com a pasta usada. O argumento cache_dir do CacheSettings vence as duas, e o aviso diz isso
AGROBR_CACHE_DB_NAME agrobr.duckdb Nome do banco DuckDB do CEPEA, dentro da pasta de cache
AGROBR_ANEC_CACHE_DISABLED desligada Booleano. Ligada, a ANEC não lê nem grava os PDFs no cache
AGROBR_ACERVO_FUNDIARIO_CACHE_DISABLED desligada Booleano. Ligada, o Acervo Fundiário não lê nem grava os ZIPs no cache, como use_cache=False
AGROBR_ANEC_LIST_TTL 300 Segundos em que a lista de boletins da ANEC fica em memória; 0 desliga. Valor que não é número, negativo ou infinito vale 300, com aviso

CacheSettings(cache_dir=...) no código vence as variáveis.

HTTP

Variável Padrão O que faz
AGROBR_HTTP_TIMEOUT_CONNECT 10 Segundos para abrir a conexão
AGROBR_HTTP_TIMEOUT_READ 30 Segundos de leitura. Vale como mínimo: o cliente da fonte que fixa um tempo maior fica com o dele (resiliência). Vale também no download da ANTAQ, que usa o requests (os timeouts de escrita e de pool não se aplicam a ele)
AGROBR_HTTP_TIMEOUT_WRITE 10 Segundos de escrita
AGROBR_HTTP_TIMEOUT_POOL 10 Segundos de espera por uma conexão livre
AGROBR_HTTP_TIMEOUT_DOWNLOAD_COMEXSTAT 300 Teto, em segundos, do download inteiro de um arquivo do Comex Stat, novas tentativas incluídas. O AGROBR_HTTP_TIMEOUT_READ não mexe nele; suba este em rede lenta. Número finito maior que 0; o resto é recusado com pydantic.ValidationError
AGROBR_HTTP_MAX_RETRIES 3 Total de tentativas por pedido, contando a primeira. 0 vale 1 (sem retry); negativo é recusado com pydantic.ValidationError
AGROBR_HTTP_RETRY_BASE_DELAY 1.0 Primeira espera entre tentativas, em segundos
AGROBR_HTTP_RETRY_MAX_DELAY 30.0 Teto da espera entre tentativas, em segundos
AGROBR_HTTP_RETRY_EXPONENTIAL_BASE 2 Fator da espera a cada nova tentativa
AGROBR_HTTP_RATE_LIMIT_<FONTE> por fonte Intervalo mínimo, em segundos, entre pedidos à fonte, no processo inteiro. Número finito maior ou igual a 0 (0 não espera); negativo, inf ou nan é recusado com pydantic.ValidationError
AGROBR_HTTP_RATE_LIMIT_DEFAULT 1.0 Intervalo das fontes sem variável própria, com a mesma validação
AGROBR_HTTP_MAX_CONCURRENT_<FONTE> por fonte Pedidos simultâneos à fonte. Só existe para ANA (1), ANP_DIESEL (3), B3 (3) e IBGE (3); valor menor que 1 é recusado com pydantic.ValidationError
AGROBR_HTTP_MAX_CONCURRENT_DEFAULT 1 Pedidos simultâneos das demais fontes; menor que 1 é recusado com pydantic.ValidationError

<FONTE> do intervalo, com o padrão em segundos: ABIOVE (3), ACERVO_FUNDIARIO (3), ANA (2), ANDA (3), ANEC (3), ANP_DIESEL (2), ANTAQ (1), ANTT_PEDAGIO (2), B3 (1), B3_ARQUIVOS (5), BCB (1), CEPEA (5), CFTC (2), CNUC (2), COMEXSTAT (2), COMTRADE (2), CONAB (3), CONAB_CEASA (2), DEFENSIVOS (2), DERAL (3), DESMATAMENTO (2), EMBRAPA_SOLOS (2), FUNAI (2), IBAMA (2), IBGE (1), ICMBIO (2), IMEA (1), INCRA (2), INMET (0.5), LISTA_SUJA (2), MAPBIOMAS (2), MAPBIOMAS_ALERTA (3), NASA_POWER (1), NOTICIAS_AGRICOLAS (2), QUEIMADAS (1), RIO_VERDE (3), RNC (3), SFB (2), SICAR (2), UNICA (3), USDA (1) e ZARC (2). Variável de fonte fora das listas não tem efeito. O detalhe do retry e da concorrência está em Resiliência.

O HTTPSettings recusa texto em variável numérica, AGROBR_HTTP_MAX_RETRIES negativo, AGROBR_HTTP_RATE_LIMIT_<FONTE> negativo ou não finito, AGROBR_HTTP_MAX_CONCURRENT_<FONTE> menor que 1 e AGROBR_HTTP_TIMEOUT_DOWNLOAD_COMEXSTAT que não seja positivo e finito. Essa recusa vem já no import agrobr, porque cada cliente monta as configurações HTTP ao ser importado; definido depois do import, o valor é recusado no pedido seguinte. A exceção é a pydantic.ValidationError, que não herda de AgrobrError e não é a agrobr.exceptions.ValidationError. AGROBR_HTTP_RETRY_BASE_DELAY e AGROBR_HTTP_RETRY_MAX_DELAY negativos passam no import e levantam InvalidParameterError no primeiro pedido que passa pelo retry.

Credenciais

Variável Fonte O que faz
AGROBR_INMET_TOKEN INMET Token da API observacional (inmet.estacao, inmet.clima_uf). Os ZIPs históricos não precisam dele
AGROBR_USDA_API_KEY USDA PSD Chave obrigatória do usda.psd. O argumento api_key= vence a variável
AGROBR_COMTRADE_API_KEY UN Comtrade Chave opcional; sem ela, a consulta usa o preview público. O argumento api_key= vence a variável
AGROBR_MAPBIOMAS_ALERTA_TOKEN MapBiomas Alerta Token obrigatório. O argumento token= vence a variável
AGROBR_BQ_BILLING_PROJECT BCB/SICOR Projeto GCP de cobrança do BigQuery, no fallback do crédito rural (extra [bigquery]). Sem ela, vale o billing_project_id do basedosdados
AGROBR_CONAB_CEASA_USER e AGROBR_CONAB_CEASA_PASS CONAB CEASA Usuário e senha do serviço de preços da CEASA. O padrão é o acesso público; defina só se o seu ambiente exigir outro

O agrobr não grava credencial em disco. Os valores destas variáveis (menos o AGROBR_BQ_BILLING_PROJECT e o AGROBR_CONAB_CEASA_USER) e os dos webhooks e da chave de e-mail dos alertas saem como [REDACTED] nas mensagens de erro.

Certificados

SSL_CERT_FILE (arquivo) ou SSL_CERT_DIR (pasta) troca as autoridades certificadoras; sem elas, vale o certifi. Os clientes seguem a convenção do httpx, e o SICAR, a ComexStat e a FUNAI, que montam um contexto TLS próprio, leem as mesmas variáveis. A ANTAQ baixa pelo requests, que não as lê: para ela, use REQUESTS_CA_BUNDLE (arquivo). Use em rede com proxy que reassina o TLS.

Alertas

Usadas pelo health check e pelo envio de alertas, que são infraestrutura interna, sem garantia de SemVer (API pública).

Variável Padrão O que faz
AGROBR_ALERT_ENABLED true Booleano. Desligada, nenhum alerta é enviado
AGROBR_ALERT_SLACK_WEBHOOK — URL do webhook do Slack
AGROBR_ALERT_DISCORD_WEBHOOK — URL do webhook do Discord
AGROBR_ALERT_SENDGRID_API_KEY — Chave do SendGrid para o e-mail
AGROBR_ALERT_EMAIL_FROM alerts@agrobr.dev Remetente do e-mail
AGROBR_ALERT_EMAIL_TO vazia Destinatários, em lista JSON: '["a@exemplo.com"]'
AGROBR_ALERT_ALERT_ON_PARSE_ERROR, _LAYOUT_CHANGE, _SOURCE_DOWN, _ANOMALY, _SOFT_BLOCK true Booleanos: alerta por categoria de falha. O nome repete ALERT (prefixo mais campo)
AGROBR_ALERT_ALERT_ON_RECOVERY true Booleano: alerta quando a fonte volta
AGROBR_ALERT_CONSECUTIVE_FAILURES_WARNING 2 Falhas seguidas até o alerta de aviso
AGROBR_ALERT_CONSECUTIVE_FAILURES_CRITICAL 3 Falhas seguidas até o alerta crítico
AGROBR_ALERT_DISCORD_EMBED_CHAR_LIMIT 3900 Teto de caracteres da mensagem no Discord

Booleanos

AGROBR_ANEC_CACHE_DISABLED e AGROBR_ACERVO_FUNDIARIO_CACHE_DISABLED ligam com 1, true, yes ou on (e t ou y) e desligam com 0, false, no ou off (e f ou n), sem distinção de caixa. Só nessas 2 variáveis os espaços das pontas saem, e ausente ou vazia vale desligada. Outro valor (por exemplo, sim) levanta InvalidParameterError na consulta.

Os booleanos dos alertas (AGROBR_ALERT_ENABLED e AGROBR_ALERT_ALERT_ON_*) aceitam os mesmos valores, sem distinção de caixa, mas não tiram os espaços nem aceitam o vazio: ' YES ', a variável vazia e qualquer outro valor levantam pydantic.ValidationError.

Ver a configuração

agrobr config show mostra a pasta do cache, o nome do banco, o timeout de leitura e o total de tentativas em vigor (CLI).