【发布时间】:2016-01-27 10:33:34
【问题描述】:
我正在尝试使用 Django 缓存来实现锁定机制。在 Celery 官方 site 中,它声称 Django 缓存可以正常工作。但是,根据我的经验,它不起作用。我的经验是,如果有多个线程/进程几乎在同一时间(接近〜0.003 秒)获得锁,所有线程/进程都会成功获得锁。对于其他获取锁的线程晚于 ~0.003 秒,它会失败。
只有我一个人经历过这种情况吗?如果可能,请纠正我。
def acquire(self, block = False, slp_int = 0.001):
while True:
added = cache.add(self.ln, 'true', self.timeout)
if added:
cache.add(self.ln + '_pid', self.pid, self.timeout)
return True
if block:
sleep(slp_int)
continue
else:
return False
# Set Django backend cache to localcache
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/dev/shm/django_cache',
}
}
【问题讨论】: