跳转到主要内容

数据库锁定

项目描述

https://coveralls.io/repos/github/vikingco/django-db-locking/badge.svg?branch=master https://travis-ci.org/vikingco/django-db-locking.svg?branch=master

用法

最简单的用法是将其用作上下文管理器

with NonBlockingLock.objects.acquire_lock(obj=model_obj):
    model_obj.do_something()

或者您可以自己跟踪锁定

try:
    lock = NonBlockingLock.objects.acquire_lock(obj=model_obj)
except AlreadyLocked:
    return False

model_obj.do_something()
lock.release()

如果您没有Django模型,或者您想自己指定锁定名称,也可以这样做

# this will raise AlreadyLocked, if it's locked
lock = NonBlockingLock.objects.acquire_lock(lock_name='my_lock')
do_something()
lock.release()

注意,锁定可以自动过期。有一个 LOCK_MAX_AGE 设置,您可以在整个Django代码库中指定默认锁定释放值。此值可以通过设置 max_age 参数来覆盖。

测试

您可以使用以下命令运行测试

tox

发布

v2.0.0

合并master和pre-django-1.8分支,移除管理命令,改用celery任务

v1.2.1

修复迁移到UUIDField for PostGres的问题

v1.2.0

将id移至UUIDField,添加代码质量检查和CI

v1.1.0

将模型重命名为NonBlockingLock,并添加更多功能

v1.0.1

修正测试和代码清理

v1.0.0

初始发布。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪一个,请了解有关 安装包 的更多信息。

源分发

django-db-locking-2.0.4.tar.gz (9.7 kB 查看哈希值)

上传于 源码

构建分发

django_db_locking-2.0.4-py2.py3-none-any.whl (18.4 kB 查看哈希值)

上传于 Python 2 Python 3

支持者