Я пытаюсь использовать кеш Django для реализации механизма блокировки. В Celery offical site он утверждал, что кэш Django отлично подходит для этого. Однако в моем опыте это не сработало. Мой опыт в том, что если несколько потоков/процессов получают блокировку почти в одно и то же время (около ~ 0,003 секунды), все потоки/процессы будут успешно блокировать блокировку. Для других потоков, которые приобретают блокировку позже, чем ~ 0.003 секунды, она терпит неудачу.Блокировка кеша сельдерей Django не работает?
Я один человек испытал это? Пожалуйста, поправьте меня, если это возможно.
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',
}
}