gpt4 book ai didi

django - Elastic Beanstalk 上的 Django 中的定期任务(可能使用 celerybeat)

转载 作者:行者123 更新时间:2023-12-02 21:16:26 29 4
gpt4 key购买 nike

我正在尝试为 Elastic Beanstalk 上的 Django 应用程序设置日常任务。似乎没有一种公认的方法来设置它,因为 celerybeat 是 Django 中定期任务的首选解决方案,但对于负载平衡环境来说不太好。

我见过一些解决方案,例如使用 Leader_only=True 设置 celerybeat 来仅运行一个实例,但这会留下单点故障。我见过其他解决方案,允许许多 celery 实例运行并使用锁来确保只有一个任务完成,但是除非重新启动失败的实例,否则这最终不会完全失败吗?我看到的另一个建议是有一个单独的实例来运行 celerybeat,但这仍然是一个问题,除非它有某种方式在失败时重新启动。

对于这个问题有什么好的解决办法吗?我宁愿不必照顾调度程序,因为很容易注意到我的任务直到一段时间后才运行。

最佳答案

如果您使用 Redis 作为代理,请考虑安装 RedBeat 作为 celery 节拍调度程序:https://github.com/sibson/redbeat

此调度程序使用 redis 中的锁定来确保只有一个beat实例正在运行。这样,您就可以在每个节点的工作进程上启用beat并删除leader_only=True的使用。

celery worker -B -S redbeat.RedBeatScheduler

假设您有具有节拍锁定的工作人员 A 和工作人员 B。如果工作人员 A 死亡,工作人员 B 将在 configurable 之后尝试获取节拍锁定。时间量。

关于django - Elastic Beanstalk 上的 Django 中的定期任务(可能使用 celerybeat),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34795870/

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