Ferramentas/AjustaFundos/actions/data/ensure_batch_limit.py

24 lines
923 B
Python

from actions.data.json_size import JsonSize
class EnsureBatchLimit:
# ------------------------------------------------------------------
# Função reutilizável: recebe o lote (array) e o item, respeita o limite
# Retorna (to_send, new_batch):
# - se couber: (None, batch_com_item)
# - se não couber: (batch_atual_para_envio, novo_batch_com_item)
# ------------------------------------------------------------------
def execute(self, batch: list, item, max_bytes: int):
batch_size = JsonSize(batch)
item_size = JsonSize(item)
if batch_size + item_size <= max_bytes:
batch.append(item)
return None, batch # nada a enviar agora
else:
# não coube: envia o lote atual e começa um novo com o item
to_send = batch[:] # cópia para envio
new_batch = [item]
return to_send, new_batch