芹菜中的预取任务是否被承认?

时间:2017-02-13 08:56:01

标签: django rabbitmq celery celery-task

我有以下设置:

  • RabbitMQ经纪人+ Django
  • 芹菜与CELERYD_PREFETCH_MULTIPLIER = 32(我有很多小任务 因此从性能角度来预取它们很有意义。
  • CELERY_ACKS_LATE = False(任务不是幂等的)

我在码头工人的容器中运行芹菜,所以当我重建码头工人时,芹菜工人没有优雅地关闭。这是可以的,如果没有确认任务,因为一旦工人再次在新的docker容器中,经纪人会将它们发回去,但在其他情况下,它们将会丢失。

在花卉管理面板中,预取任务已收到状态。

我仔细阅读了官方文档和related question,直觉上我觉得我的设置中的预取任务得到了承认。是这样吗?

1 个答案:

答案 0 :(得分:2)

只要工人开始执行CELERY_ACKS_LATE=False,就会确认def matmult(m1,m2): r=[] m=[] for i in range(len(m1)): for j in range(len(m2[0])): sums=0 for k in range(len(m2)): sums=sums+(m1[i][k]*m2[k][j]) r.append(sums) m.append(r) r=[] return m 任务。{/ 3}}。

因此,如果一个工作人员开始执行任务并且你杀了它,任务就会丢失。其他预取任务不会丢失,因为它们仍未被承认。