【问题标题】:How to prevent the same task to be executed by celery?如何防止芹菜执行相同的任务?
【发布时间】:2016-08-29 16:44:48
【问题描述】:

我正在实现一个缓存服务器,它使用 celery 任务在后台更新缓存。我只用不同的参数(缓存键)调用它。

由于在将此服务器连接到我的主生产服务器后,它将每秒收到数十个相同缓存键的请求,我想确保在 celery 队列中使用相同缓存键的更新任务不超过一个(同时作为队列和集合工作)。

我想在运行任务之前使用 redis 集来确保这一点,但我正在寻找更好的方法。

【问题讨论】:

  • 您的要求真的是“在 celery QUEUE 中只有一个具有相同缓存键的任务”还是“只有一个具有相同缓存键的任务同时运行(更新缓存)”?
  • @MuhammadTahir 只有一个任务在 celery QUEUE 中具有相同的缓存键
  • 看看这是否适合你docs.celeryproject.org/en/latest/tutorials/…。这适用于我提到的第二种情况,但也可以针对您的版本(我提到的第一种情况)进行修改。
  • @funky-future 可能是的。我将尝试查找我当时正在编写的代码,以检查这两个问题的要求是否有任何差异。虽然我记得我用这个github.com/cameronmaske/celery-once 解决了我的问题。

标签: python django celery django-1.8


【解决方案1】:

只有一种方法,实现你自己的锁机制。 官方文档有一个nice example page.。 唯一的限制是你的想象力。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    相关资源
    最近更新 更多