24 lines
923 B
Python
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
|