Skip to content

Latest commit

 

History

History
178 lines (132 loc) · 7.67 KB

File metadata and controls

178 lines (132 loc) · 7.67 KB

Changelog

v4.1.0 (todo)

  • Dropped support for EOL Python 3.7, 3.8 and 3.9. Minimum version is 3.10.
  • Added support for valkey and django-valkey.

v4.0.1 (2026-04-08)

  • Fixed typo when setting daemon mode for the renewal thread. Contributed by Eeo Jun in #94.
  • Fixed syntax in some examples in documentation. Contributed by Lee Bush in #110.
  • Added the blocking argument to Lock.__init__ to allow this behavior when using it as a context manager. Contributed by Andrew Petriv in #102.

v4.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 single redis_lock.refresh.thread logger.
  • Various testing cleanup (mainly removal of hardcoded tmp paths).

v3.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 #80..

  • Fixed few CI issues regarding doc checks. Contributed by Salomon Smeke Cohen in #81..

v3.6.0 (2020-07-23)

  • Improved timeout/expire validation so that:
    • timeout and expire are converted to ``None if they are falsy. Previously only None disabled these options, other falsy values created buggy situations.
    • Using timeout greater than expire is now allowed, if auto_renewal is set to True. Previously a TimeoutTooLarge error was raised. See #74..
    • Negative timeout or expire 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.

v3.5.0 (2020-01-13)

  • Added a locked method. Contributed by Artem Slobodkin in #72..

v3.4.0 (2019-12-06)

  • Fixed regression that can cause deadlocks or slowdowns in certain configurations. See: #71..

v3.3.1 (2019-01-19)

  • Fixed failures when running python-redis-lock 3.3 alongside 3.2. See: #64..

v3.3.0 (2019-01-17)

  • Fixed deprecated use of warnings API. Contributed by Julie MacDonell in #54..
  • Added auto_renewal option in RedisCache.lock (the Django cache backend wrapper). Contributed by c in #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.

v3.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 #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 of redis.StrictRedis.
  • Added convenience method locked_get_or_set to Django cache backend.

v3.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 #33..

v3.0.0 (2016-01-16)

  • Changed release so that it expires signal-keys immediately. Contributed by Andrew Pashkin in #28..
  • Resetting locks (reset or reset_all) will release the lock. If there's someone waiting on the reset lock now it will acquire it. Contributed by Andrew Pashkin in #29..
  • Added the extend method on Lock objects. Contributed by Andrew Pashkin in #24..
  • Documentation improvements on release method. Contributed by Andrew Pashkin in #22..
  • Fixed acquire(block=True) handling when expire option was used (it wasn't blocking indefinitely). Contributed by Tero Vuotila in #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 from release - 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.

v2.3.0 (2015-09-27)

  • Added the timeout option. Contributed by Victor Torres in #20..

v2.2.0 (2015-08-19)

  • Added the auto_renewal option. Contributed by Nick Groenen in #18..

v2.1.0 (2015-03-12)

  • New specific exception classes: AlreadyAcquired and NotAcquired.
  • Slightly improved efficiency when non-waiting acquires are used.

v2.0.0 (2014-12-29)

  • Rename Lock.token to Lock.id. Now only allowed to be set via constructor. Contributed by Jardel Weyrich in #11..

v1.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 #7..
  • Add Lock.reset functionality.
  • Expose the Lock.token attribute.

v0.1.2 (2013-11-05)

  • ?

v0.1.1 (2013-10-26)

  • ?

v0.1.0 (2013-10-26)

  • ?

v0.0.1 (2013-10-25)

  • First release on PyPI.