django缓存的简单锁扩展。

django-cache-lock的Python项目详细描述


django缓存锁

PyPIBuild Status

Django缓存的一个简单锁扩展,用于防止并发编辑。

安装

使用pip安装django缓存锁

pip install django-cache-lock

快速启动

您可以使用with语句或decorator使用django缓存锁

from django_lock import lock

with lock("global"):
    pass

@lock("global")
def foo():
    pass

锁定模型实例的快捷方式

from django.db import models
from django_lock import model_lock

class Foo(models.Model):
    bar = models.CharField(max_length=8)

    @lock_model
    def lock_pk(self):
        pass

    @lock_model("bar", blocking=False)
    def lock_bar(self):
        pass

配置

keydefaultdesc
DJANGOLOCK_PREFIX"lock:"lock's key prefix stored in cache
DJANGOLOCK_SLEEP0.1default interval time to acquire a lock if a lock is holded by others
DJANGOLOCK_RELEASEONDELTruerelease lock when ^{} is called if True

高级用法

有关更多用法,请阅读code

支持的后端

  • django.core.cache.backends.db
  • django.core.cache.backends.file
  • django.core.cache.backends.locmem
  • django.core.cache.backends.memcached
  • django-redis
  • django-redis-cache

注意事项

locmem后端

  • 不要在产品环境中使用locmem后端。

memcached后端

  • Memcached不支持毫秒过期时间,而且它的过期时间不是很精确所以memcached lock的超时时间并不像其他后端那样精确。

redis后端

  • 我们没有测试分布式redis锁。

待办事项:

  • 使用memcached的cas释放锁
  • 重新获取并扩展锁
  • 数据库后端缓存支持

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在返回类类型时取消选中转换   java使用JSR303和spring的验证器的组合为spring引导端点实现自定义验证逻辑   java如何使用struts2预填充复选框列表   参数数目可变的java重写方法   java这种情况下正确的日期格式是什么?   java使用带有@RequestParam的springboot内部@Controller来提供搜索方法   室内导航和路径发现中的java图遍历和过滤   java在素数面中的另一个bean中获取bean值   java在发送电子邮件时更改文本(字符串)的颜色   在Java中使用Android文本视图时出错   java Resteasy javax如何将contenttype*/*映射到服务器端的application/json?   java如何使用ApacheShiro在会话过期时重新登录?   java是否有正当理由隐藏静态方法?   java如何在javax中覆盖/插入自定义文本。打印文档(pdf、doc、docx…)?