diff options
author | CoprDistGit <infra@openeuler.org> | 2023-05-15 07:30:56 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-05-15 07:30:56 +0000 |
commit | df5f3223d0abae9bfc03c4c3572d0f40c64b0f86 (patch) | |
tree | dc09734557f1c8c11dc4bb0eee750e330ef1e8f6 | |
parent | 1c9b7b25e74884785265fddfd8f4bd73de6b3ba4 (diff) |
automatic import of python-django-cache-lock
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-django-cache-lock.spec | 317 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 319 insertions, 0 deletions
@@ -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 + +[](https://pypi.org/project/django-cache-lock) +[](https://travis-ci.org/Xavier-Lam/django-cache-lock) +[](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 + +[](https://pypi.org/project/django-cache-lock) +[](https://travis-ci.org/Xavier-Lam/django-cache-lock) +[](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 + +[](https://pypi.org/project/django-cache-lock) +[](https://travis-ci.org/Xavier-Lam/django-cache-lock) +[](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 @@ -0,0 +1 @@ +b770560a038ec6a341a4a73e75d4828a django-cache-lock-0.2.5.tar.gz |