fredlock distributed locking utility
fredlock is a distributed locking tool based on Redis RedLock algorithm intended as a replacement for "flock" command line utility, it allows to run commands on multiple machines with a guarantee that no two instances will be running at the same time.
fredlock requires a shared Redis instance to provide locking
-
0.1.3 - No Changes (testing auto-release)
-
0.1.2 - No Changes (testing auto-release)
-
0.1.1 - Bugfixes
- Removed
--redis_ssl
and--redis-unix-socket-path
command line options for now, not compatible with older redis clients - Fixed sleep after acquire/before release
- Removed
-
0.1.0 - Initial version
- Features
- Auto-release of a lock after x seconds if command does not
complete in allotted time. (
--auto-release-time x
) - Specify how long to wait for lock
- Indefinitely (
--wait-timeout -1
) - Limited Time (
--wait-timeout x
(x > 0)) - Do not wait (
--wait-timeout 0
)
- Indefinitely (
- Custom Optional Delays:
- After lock acquire, before command execution (
--delay-after-acquire x
) - After command execution, before lock release (
--delay-before-release x
)
- After lock acquire, before command execution (
- Auto-release of a lock after x seconds if command does not
complete in allotted time. (
- Features
Some other ideas/desired features:
- Quiet timeouts (no output/failure if not run due to timeout trying to get lock)
- Config file (currently we support cli and env variables)
- Redis Cluster support
- Lock Namespacing
From PyPi:
pip install fredlock
Full build-in usage is available with --help
flag.
Simplest usage to run a command command arg1 arg2
with lock command:
fredlock run command arg1 arg2
Simplest usage to run a command command arg1 arg2
with lock lockname:
fredlock --name lockname run command arg1 arg2