我正在使用celery.contrb.batches来执行一批芹菜任务。我知道它是实验性的,但我仍然想尝试一下,我已经很接近了。在执行批处理中的单个任务时,我会故意发送backend.mark_as_started(request.id)、backend.mark_as_done(request.iid,True)等信号。但工人没有收到这些信号。请注意,如果我去掉批并一次执行一个任务,一切都会正常工作。也就是说,我的信号处理程序函数确实会被执行。
celery.contrb.Batches确实不会发送这些信号。解决方案是从批处理任务内部发送这些信号。