gpt4 book ai didi

具有多个实例的 Django 应用程序 - 如何确保每日电子邮件仅发送一次?

转载 作者:行者123 更新时间:2023-12-04 15:35:08 26 4
gpt4 key购买 nike

我正在构建一个 Django 应用程序,它使用 APScheduler 在每天的预定时间发送每日电子邮件。最近决定将实例数量增加到两个,以便在其中一个实例崩溃的情况下始终运行某些东西。我现在面临的问题是如何防止两个实例都发送每日电子邮件。我考虑过让它在数据库 (Postgres) 上设置某种标志,以便另一个实例知道不发送,但我认为这种方法会造成竞争条件——第一个实例不会及时设置标志第二个实例看到或一些类似的场景。有没有人遇到过这个问题,你是如何解决的?

编辑:
def start():
scheduler = BackgroundScheduler()
scheduler.add_job(send_daily_emails, 'cron', hour=11)
scheduler.start()

所以这是在我的应用程序初始化时运行的——这会创建一个运行 send_daily_emails 的后台调度程序每天早上 11 点运作。 send_daily_emails功能正是如此——它所做的只是发送几封电子邮件。我的问题是,如果有两个应用程序实例正在运行,将创建两个单独的后台调度程序,因此电子邮件将每天发送两次而不是一次。

最佳答案

您可以通过 select_for_update 使用您建议的数据库解决方案

关于具有多个实例的 Django 应用程序 - 如何确保每日电子邮件仅发送一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60043324/

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