将芹菜任务重定向到其他队列但不使用它

Redirect celery task to other queue but don't consume it

我希望创建一个任务,它会在出现错误时将自身重定向到其他队列。这样做的目的是将失败的任务消息与所有任务数据一起存储,例如使用 CLI 将数据重定向到正确的队列或删除所有数据。但问题是,如果我 运行 在另一个队列上执行任务,任务将被消耗,并且 RabbitMQ 不会存储任何数据。有什么方法可以防止队列使用来自 RabbitMQ 的消息吗?

@shared_task(bind=True)
def my_task(self, arg):
    try:
        ...
    except MaxRetriesExceededError:
        my_task.apply_async([arg], queue='failed_queue')


my_task.apply_async(['arg'], queue='my_queue')```

@Lotram 解决方案有效。 如果 worker 使用命令启动,Celery 不会使用 RabbitMQ 消息: celery -A proj worker -Q my_queue -X failed_queue

-X 参数不允许工作人员从指定队列消费