Prechádzať zdrojové kódy

task-cookbook: Note on cache backends

The `cache.add` method is not actually atomic in all Django cache backends.
Some users get confused when the locking scheme proposed here
doesn't actually work since their backend doesn't actually support an atomic
`.add` operation.  Make a note to help avoid confusion.

References:
http://stackoverflow.com/questions/35034885/django-celery-cache-lock-did-not-work
http://stackoverflow.com/questions/37849647/using-django-cache-add-for-locking-in-a-celery-task-is-not-working
Mitchel Humpherys 9 rokov pred
rodič
commit
e213163933
1 zmenil súbory, kde vykonal 5 pridanie a 0 odobranie
  1. 5 0
      docs/tutorials/task-cookbook.rst

+ 5 - 0
docs/tutorials/task-cookbook.rst

@@ -61,3 +61,8 @@ The cache key expires after some time in case something unexpected happens
 
         logger.debug(
             'Feed %s is already being imported by another worker', feed_url)
+
+
+Note that in order for this to work correctly you need to be using a cache
+backend that supports an atomic ``.add`` operation.  ``memcached`` is known
+to work well for this purpose.