2016-05-04 44 views
3

我正在实现一个缓存服务器,它使用一个芹菜任务来更新后台中的缓存。只有一个任务使用不同的参数(缓存键)调用它。如何防止芹菜执行相同的任务?

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

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

+1

您的要求真的是“只有一个任务在celery QUEUE中具有相同的缓存键”还是“只有一个任务具有相同的缓存键并行运行(更新缓存)”? –

+0

@MuhammadTahir只有一个任务在芹菜内部具有相同的缓存键QUEUE – Sina

+1

看看这是否适用于你http://docs.celeryproject.org/en/latest/tutorials/task-cookbook.html#ensuring-a-task-is - 只执行的酮在-A-时间。这将像我提到的第二种情况一样工作,但它可以针对您的版本进行修改(我提到的第一个)。 –

回答

1

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

希望这会有所帮助。