rl icon indicating copy to clipboard operation
rl copied to clipboard

Rate limit from stdin to stdout (drop or keep messages)

rl

Rate limit messages from stdin. (keep or drop those exceeding the limit)

Use case

  • When sending data to mattermost (or slack), it's convenient to limit the amount of data that can be sent.

E.g. when using mattertee to send output to mattermost, you can now just pipe it through rl so that your channels aren't being flooded.

  • Tailing -f a very quickly increasing logfile when in tmux remotely ;)

Installing

Binaries

Binaries can be found [here] (https://github.com/42wim/rl/releases/)

Building

Go 1.12+ is required.

go get github.com/42wim/rl

You should now have rl binary in the ~/go/bin directory:

$ ls ~/go/bin/
rl

Usage

Usage of ./rl:
  -f string
        define a file as input
  -k    keep the messages instead of dropping them
  -r int
        limit to r messages per second (drops those exceeding the limit) (default 5)

(the number of dropped messages will be sent to stderr, when not using the -k switch)

Example

journalctl -f | rl -k -r 5