summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-15 07:30:56 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-15 07:30:56 +0000
commitdf5f3223d0abae9bfc03c4c3572d0f40c64b0f86 (patch)
treedc09734557f1c8c11dc4bb0eee750e330ef1e8f6
parent1c9b7b25e74884785265fddfd8f4bd73de6b3ba4 (diff)
automatic import of python-django-cache-lock
-rw-r--r--.gitignore1
-rw-r--r--python-django-cache-lock.spec317
-rw-r--r--sources1
3 files changed, 319 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..efdc6e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/django-cache-lock-0.2.5.tar.gz
diff --git a/python-django-cache-lock.spec b/python-django-cache-lock.spec
new file mode 100644
index 0000000..234eadd
--- /dev/null
+++ b/python-django-cache-lock.spec
@@ -0,0 +1,317 @@
+%global _empty_manifest_terminate_build 0
+Name: python-django-cache-lock
+Version: 0.2.5
+Release: 1
+Summary: A simple lock extension for django's cache.
+License: MIT License
+URL: https://github.com/Xavier-Lam/django-cache-lock
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/02/63/966ed2b3180e7f5c3401682cd1be615bf8c8c0db21602128dc0eeca22b87/django-cache-lock-0.2.5.tar.gz
+BuildArch: noarch
+
+Requires: python3-Django
+Requires: python3-six
+
+%description
+# django-cache-lock
+
+[![PyPI](https://img.shields.io/pypi/v/django-cache-lock.svg)](https://pypi.org/project/django-cache-lock)
+[![Build Status](https://travis-ci.org/Xavier-Lam/django-cache-lock.svg?branch=master)](https://travis-ci.org/Xavier-Lam/django-cache-lock)
+[![Donate with Bitcoin](https://en.cryptobadges.io/badge/micro/1BdJG31zinrMFWxRt2utGBU2jdpv8xSgju)](https://en.cryptobadges.io/donate/1BdJG31zinrMFWxRt2utGBU2jdpv8xSgju)
+
+A simple lock extension for django's cache to prevent concurrent editing.
+
+## Installation
+Install django-cache-lock by using pip
+
+ pip install django-cache-lock
+
+## Quick Start
+You can work with django-cache-lock by using with-statement or decorator.
+
+ from django_lock import lock
+
+ with lock("global"):
+ pass
+
+ @lock("global")
+ def foo():
+ pass
+
+A shortcut to lock model instance
+
+ 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
+
+ def nolock(self):
+ pass
+
+ foo = Foo()
+ with lock_model(foo, blocking=False):
+ nolock()
+
+## Configurations
+| key | default | desc |
+| --- | --- | --- |
+| DJANGOLOCK_PREFIX | "lock:" | lock's key prefix stored in cache |
+| DJANGOLOCK_SLEEP | 0.1 | default interval time to acquire a lock if a lock is holded by others |
+| DJANGOLOCK_RELEASEONDEL | True | release lock when `__del__` is called if True |
+
+## Advanced usage
+For more usages, please read the [code](django_lock.py).
+
+## Supported backends
+* django.core.cache.backends.db
+* django.core.cache.backends.file
+* django.core.cache.backends.locmem
+* django.core.cache.backends.memcached
+* [django-redis](https://github.com/niwinz/django-redis)
+* [django-redis-cache](https://github.com/sebleier/django-redis-cache)
+
+## ATTENTIONS
+### locmem backend
+* DO NOT USE locmem backend in a product environment.
+
+### memcached backend
+* Memcached does not support milliseconds expire time, and its' expire time is not very exact. So memcached lock's timeout time is not as exact as other backends.
+
+### redis backend
+* We didn't test distributed redis lock.
+
+## TODOS:
+* use memcached's cas to release lock
+* reacquire and extend lock
+* database backend cache support
+
+
+
+%package -n python3-django-cache-lock
+Summary: A simple lock extension for django's cache.
+Provides: python-django-cache-lock
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-django-cache-lock
+# django-cache-lock
+
+[![PyPI](https://img.shields.io/pypi/v/django-cache-lock.svg)](https://pypi.org/project/django-cache-lock)
+[![Build Status](https://travis-ci.org/Xavier-Lam/django-cache-lock.svg?branch=master)](https://travis-ci.org/Xavier-Lam/django-cache-lock)
+[![Donate with Bitcoin](https://en.cryptobadges.io/badge/micro/1BdJG31zinrMFWxRt2utGBU2jdpv8xSgju)](https://en.cryptobadges.io/donate/1BdJG31zinrMFWxRt2utGBU2jdpv8xSgju)
+
+A simple lock extension for django's cache to prevent concurrent editing.
+
+## Installation
+Install django-cache-lock by using pip
+
+ pip install django-cache-lock
+
+## Quick Start
+You can work with django-cache-lock by using with-statement or decorator.
+
+ from django_lock import lock
+
+ with lock("global"):
+ pass
+
+ @lock("global")
+ def foo():
+ pass
+
+A shortcut to lock model instance
+
+ 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
+
+ def nolock(self):
+ pass
+
+ foo = Foo()
+ with lock_model(foo, blocking=False):
+ nolock()
+
+## Configurations
+| key | default | desc |
+| --- | --- | --- |
+| DJANGOLOCK_PREFIX | "lock:" | lock's key prefix stored in cache |
+| DJANGOLOCK_SLEEP | 0.1 | default interval time to acquire a lock if a lock is holded by others |
+| DJANGOLOCK_RELEASEONDEL | True | release lock when `__del__` is called if True |
+
+## Advanced usage
+For more usages, please read the [code](django_lock.py).
+
+## Supported backends
+* django.core.cache.backends.db
+* django.core.cache.backends.file
+* django.core.cache.backends.locmem
+* django.core.cache.backends.memcached
+* [django-redis](https://github.com/niwinz/django-redis)
+* [django-redis-cache](https://github.com/sebleier/django-redis-cache)
+
+## ATTENTIONS
+### locmem backend
+* DO NOT USE locmem backend in a product environment.
+
+### memcached backend
+* Memcached does not support milliseconds expire time, and its' expire time is not very exact. So memcached lock's timeout time is not as exact as other backends.
+
+### redis backend
+* We didn't test distributed redis lock.
+
+## TODOS:
+* use memcached's cas to release lock
+* reacquire and extend lock
+* database backend cache support
+
+
+
+%package help
+Summary: Development documents and examples for django-cache-lock
+Provides: python3-django-cache-lock-doc
+%description help
+# django-cache-lock
+
+[![PyPI](https://img.shields.io/pypi/v/django-cache-lock.svg)](https://pypi.org/project/django-cache-lock)
+[![Build Status](https://travis-ci.org/Xavier-Lam/django-cache-lock.svg?branch=master)](https://travis-ci.org/Xavier-Lam/django-cache-lock)
+[![Donate with Bitcoin](https://en.cryptobadges.io/badge/micro/1BdJG31zinrMFWxRt2utGBU2jdpv8xSgju)](https://en.cryptobadges.io/donate/1BdJG31zinrMFWxRt2utGBU2jdpv8xSgju)
+
+A simple lock extension for django's cache to prevent concurrent editing.
+
+## Installation
+Install django-cache-lock by using pip
+
+ pip install django-cache-lock
+
+## Quick Start
+You can work with django-cache-lock by using with-statement or decorator.
+
+ from django_lock import lock
+
+ with lock("global"):
+ pass
+
+ @lock("global")
+ def foo():
+ pass
+
+A shortcut to lock model instance
+
+ 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
+
+ def nolock(self):
+ pass
+
+ foo = Foo()
+ with lock_model(foo, blocking=False):
+ nolock()
+
+## Configurations
+| key | default | desc |
+| --- | --- | --- |
+| DJANGOLOCK_PREFIX | "lock:" | lock's key prefix stored in cache |
+| DJANGOLOCK_SLEEP | 0.1 | default interval time to acquire a lock if a lock is holded by others |
+| DJANGOLOCK_RELEASEONDEL | True | release lock when `__del__` is called if True |
+
+## Advanced usage
+For more usages, please read the [code](django_lock.py).
+
+## Supported backends
+* django.core.cache.backends.db
+* django.core.cache.backends.file
+* django.core.cache.backends.locmem
+* django.core.cache.backends.memcached
+* [django-redis](https://github.com/niwinz/django-redis)
+* [django-redis-cache](https://github.com/sebleier/django-redis-cache)
+
+## ATTENTIONS
+### locmem backend
+* DO NOT USE locmem backend in a product environment.
+
+### memcached backend
+* Memcached does not support milliseconds expire time, and its' expire time is not very exact. So memcached lock's timeout time is not as exact as other backends.
+
+### redis backend
+* We didn't test distributed redis lock.
+
+## TODOS:
+* use memcached's cas to release lock
+* reacquire and extend lock
+* database backend cache support
+
+
+
+%prep
+%autosetup -n django-cache-lock-0.2.5
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-django-cache-lock -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 0.2.5-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..851ee36
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+b770560a038ec6a341a4a73e75d4828a django-cache-lock-0.2.5.tar.gz