gpt4 book ai didi

python - 在用 celery beat 安排任务时防止口是心非

转载 作者:行者123 更新时间:2023-12-03 19:15:12 25 4
gpt4 key购买 nike

我有一个通过 Celery Beat 定期(每分钟)运行的任务。有时,任务完成执行所需的时间会超过一分钟,这会导致调度程序在任务已经运行时将该任务添加到队列中。

如果这些任务已经在运行,有没有办法避免调度程序将任务添加到队列中?

编辑:我见过 Celery Beat: Limit to single task instance at a time

请注意,我的问题是不同的。我在问如何避免我的任务是 入队 ,而这个问题是问如何避免多次运行任务。

最佳答案

我没有遇到过这个特殊问题,但有一个类似的问题,当同类任务已经在运行或排队但没有 Celery Beat 时,我不得不避免应用任务。我走了一条类似的路线,带有锁定机制,作为您在此处链接的答案。不幸的是,这里不会那么容易,因为您想避免排队。

据我所知, celery 不支持这样的开箱即用的东西。我想最好的办法是编写一个继承自 Scheduler 的自定义调度程序。然后覆盖 apply_entry methodapply_async method .在那里你需要一个锁定机制来检查任务是否已经在运行,即在任务集中并释放锁定和在 apply_async检查那个锁。您可以使用 RedLock如果您已经在运行 Redis。

关于python - 在用 celery beat 安排任务时防止口是心非,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60990337/

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