gpt4 book ai didi

django-orm - select_for_update 是否在第一次 save() 时或在 View 末尾释放锁?

转载 作者:行者123 更新时间:2023-12-02 17:27:59 25 4
gpt4 key购买 nike

我有类似的东西:

newsletter = Newsletter.select_for_update().latest()
newsletter.started_sending = timezone.now()
newsletter.save()

newsletter.send()

然后它遇到了竞争条件,我发送了重复项,大概是因为 send() 被两个 cron 作业命中。这让我认为锁在第一次保存时被释放,而我认为直到 View 结束它才会释放。

它会在第一次保存时发布,对吧?

最佳答案

来自https://docs.djangoproject.com/en/dev/topics/db/transactions/#topics-db-transactions-requirements

Django’s default transaction behavior

Django’s default behavior is to run with an open transaction which it commits automatically when any built-in, data-altering model function is called. For example, if you call model.save() or model.delete(), the change will be committed immediately.

关于django-orm - select_for_update 是否在第一次 save() 时或在 View 末尾释放锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12173241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com