Changelog¶
4.0.0 (2022-10-17)¶
- Dropped support for Python 2.7 and 3.6.
- Switched from Travis to GitHub Actions.
- Made logging messages more consistent.
- Replaced the
redis_lock.refresh.thread.*
loggers with a singleredis_lock.refresh.thread
logger. - Various testing cleanup (mainly removal of hardcoded tmp paths).
3.7.0 (2020-11-20)¶
Made logger names more specific. Now can have granular filtering on these new logger names:
redis_lock.acquire
(emits DEBUG messages)redis_lock.acquire
(emits WARN messages)redis_lock.acquire
(emits INFO messages)redis_lock.refresh.thread.start
(emits DEBUG messages)redis_lock.refresh.thread.exit
(emits DEBUG messages)redis_lock.refresh.start
(emits DEBUG messages)redis_lock.refresh.shutdown
(emits DEBUG messages)redis_lock.refresh.exit
(emits DEBUG messages)redis_lock.release
(emits DEBUG messages)
Contributed by Salomon Smeke Cohen in PR #80.
Fixed few CI issues regarding doc checks. Contributed by Salomon Smeke Cohen in PR #81.
3.6.0 (2020-07-23)¶
- Improved
timeout
/expire
validation so that:timeout
andexpire are converted to ``None
if they are falsy. Previously onlyNone
disabled these options, other falsy values created buggy situations.- Using
timeout
greater thanexpire
is now allowed, ifauto_renewal
is set toTrue
. Previously aTimeoutTooLarge
error was raised. See #74. - Negative
timeout
orexpire
are disallowed. Previously such values were allowed, and created buggy situations. See #73.
- Updated benchmark and examples.
- Removed the custom script caching code. Now the
register_script
method from the redis client is used. This will fix possible issue with redis clusters in theory, as the redis client has some specific handling for that.
3.4.0 (2019-12-06)¶
- Fixed regression that can cause deadlocks or slowdowns in certain configurations. See: #71.
3.3.0 (2019-01-17)¶
- Fixed deprecated use of
warnings
API. Contributed by Julie MacDonell in PR #54. - Added
auto_renewal
option inRedisCache.lock
(the Django cache backend wrapper). Contributed by c in PR #55. - Changed log level for “%(script)s not cached” from WARNING to INFO.
- Added support for using
decode_responses=True
. Lock keys are pure ascii now.
3.2.0 (2016-10-29)¶
- Changed the signal key cleanup operation do be done without any expires. This prevents lingering keys around for some time. Contributed by Andrew Pashkin in PR #38.
- Allow locks with given id to acquire. Previously it assumed that if you specify the id then the lock was already acquired. See #44 and #39.
- Allow using other redis clients with a
strict=False
. Normally you’re expected to pass in an instance ofredis.StrictRedis
. - Added convenience method locked_get_or_set to Django cache backend.
3.1.0 (2016-04-16)¶
- Changed the auto renewal to automatically stop the renewal thread if lock gets garbage collected. Contributed by Andrew Pashkin in PR #33.
3.0.0 (2016-01-16)¶
- Changed
release
so that it expires signal-keys immediately. Contributed by Andrew Pashkin in PR #28. - Resetting locks (
reset
orreset_all
) will release the lock. If there’s someone waiting on the reset lock now it will acquire it. Contributed by Andrew Pashkin in PR #29. - Added the
extend
method onLock
objects. Contributed by Andrew Pashkin in PR #24. - Documentation improvements on
release
method. Contributed by Andrew Pashkin in PR #22. - Fixed
acquire(block=True)
handling whenexpire
option was used (it wasn’t blocking indefinitely). Contributed by Tero Vuotila in PR #35. - Changed
release
to check if lock was acquired with he same id. If not,NotAcquired
will be raised. Previously there was just a check if it was acquired with the same instance (self._held). BACKWARDS INCOMPATIBLE - Removed the
force
option fromrelease
- it wasn’t really necessary and it only encourages sloppy programming. See #25. BACKWARDS INCOMPATIBLE - Dropped tests for Python 2.6. It may work but it is unsupported.
2.1.0 (2015-03-12)¶
- New specific exception classes:
AlreadyAcquired
andNotAcquired
. - Slightly improved efficiency when non-waiting acquires are used.
2.0.0 (2014-12-29)¶
- Rename
Lock.token
toLock.id
. Now only allowed to be set via constructor. Contributed by Jardel Weyrich in PR #11.
1.0.0 (2014-12-23)¶
- Fix Django integration. (reported by Jardel Weyrich)
- Reorganize tests to use py.test.
- Add test for Django integration.
- Add
reset_all
functionality. Contributed by Yokotoka in PR #7. - Add
Lock.reset
functionality. - Expose the
Lock.token
attribute.
0.1.2 (2013-11-05)¶
- ?
0.1.1 (2013-10-26)¶
- ?
0.1.0 (2013-10-26)¶
- ?
0.0.1 (2013-10-25)¶
- First release on PyPI.