que tienen algo así como:¿select_for_update libera el bloqueo en el primer save() o al final de la vista?
newsletter = Newsletter.select_for_update().latest()
newsletter.started_sending = timezone.now()
newsletter.save()
newsletter.send()
Entonces se dio en una condición de carrera en la que estaba enviando duplicados, presumiblemente debido a que Enviar estaba siendo golpeado() por dos trabajos de cron. Lo que me lleva a pensar que la cerradura se libera en el primer guardado, mientras que pensé que no se soltaría hasta el final de la vista.
Se lanzó al primer guardado, ¿no?
https://docs.djangoproject.com/en/dev/ref/models/querysets/ –
@pst He leído que, en particular el https://docs.djangoproject.com/en/dev/ref/models/querysets/# select-for-update. –