We need locking here too, unless we set up celery to have exactly one public store update worker with a single process.  But here the code can sleep a little longer than 1s, and should retry infinitely.

To avoid overlaps with the main store, this means that we need a scope to the lock object in addition to the lock URI (which is then main or public).