Python Celery 中每一个任务只会落到一个 worker 上吗?

2016-09-17 12:45:54 +08:00
 TheCure

需要确保一个任务只能执行一次,找到了一下两篇资料

1.http://docs.celeryproject.org/en/latest/tutorials/task-cookbook.html#ensuring-a-task-is-only-executed-one-at-a-time

2.http://loose-bits.com/2010/10/distributed-task-locking-in-celery.html

问题 1:

貌似都是通过 acquire lock 来实现的,但是实际上我没用加锁的方式,也没遇到过同一个任务被运行两次的情况,加锁只是为了 ensure 吗,不加也没多关系?

问题 2:

celery 如果是分布式的,那 celery 是怎么做到一个任务只落到一个 celery 实例上的?使用 mq 的 lock 来保证的吗?redis 和 rmq 都能保证这一点吗

3892 次点击
所在节点    Python
2 条回复
bramblex
2016-09-17 13:24:23 +08:00
你没发现你现在是集中式的设计方案,却企图用分布式的方式实现吗?
julyclyde
2016-09-17 22:44:23 +08:00
redis broker 应该是 lpush rpop 这样的,并不需要加索啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/306736

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX