J'essaie d'envoyer une petite chaîne à statsd via nc à l'intérieur d'un bloc de lecture:
while read line; do
printf "folder.counter:value|1c" | nc -q 0 -u $host $port
done
Malheureusement, en mode UDP, nc semble vouloir attendre indéfiniment, même si je l'ai spécifié -q 0
, ce qui, selon la page de manuel, fera quitter le programme immédiatement après EOF.
J'ai essayé de passer -w 1
, mais si les données que j'envoie arrivent à plus d'une ligne par seconde, les données se tamponnent et je perds mes statistiques en temps réel (sans parler de risquer un débordement de tampon d'une certaine sorte).
Est-il possible de faire ce que j'essaie de faire avec netcat, ou vais-je avoir besoin d'écrire quelque chose dans un langage qui a une bibliothèque statsd?
Réponses:
J'ai fini par résoudre le problème en passant à
socat
:la source
Vous pouvez spécifier 0 comme valeur de délai d'expiration à -w, donc il n'attendra pas du tout.
la source
invalid wait-time 0
l'ajout de l'option -v a résolu mon problème. La raison pour laquelle je ne suis pas sûr.
la source
J'ai eu le même problème; résolu en utilisant l'
-c
option:donc quelque chose comme
Ouais, ça n'a pas vraiment de sens de "fermer" une connexion udp - mais cela a fini par fonctionner.
la source
-c
résolu mon problème avecnetcat (The GNU Netcat) 0.7.1
Pour nous, c'était que nous envoyions une charge utile nc d'une machine à une autre via un script python. Dans le python, lorsque nous avons explicitement encodé la charge utile en 'UTF-8', cela a juste fonctionné.
la source