Estou tentando enviar uma pequena string para statsd via nc dentro de um bloco de leitura:
while read line; do
printf "folder.counter:value|1c" | nc -q 0 -u $host $port
done
Infelizmente, quando no modo UDP, o nc parece querer esperar indefinidamente, mesmo que eu tenha especificado -q 0
, o que a página de manual diz que fará o programa sair imediatamente após o EOF.
Tentei passar -w 1
, mas se os dados que estou enviando chegarem a mais de uma linha por segundo, os dados serão armazenados em buffer e eu perco minhas estatísticas em tempo real (para não mencionar o risco de um buffer overflow de algum tipo).
É possível fazer o que estou tentando fazer com o netcat, ou vou precisar escrever algo em linguagem que tenha uma biblioteca statsd?