SQS 期望您的应用程序是幂等的,并且我有多个消费者/生产者(即使 SQS 有一次交付机制)我将有竞争条件创建重复和竞争条件消耗,因为我的消费者通过 cron 作业运行。
我目前的计划是使用 Django 1.4 select_for_update
,它应该阻止同一行的其他消费者,执行以下操作:
reminders = EmailReminder.objects.select_for_update().filter(id=some_id)
if not reminders[0].finished:
reminder.send()
reminder.update(finished=datetime.now())
# Delete job.
有没有更好的方法来处理这个问题?