将芹菜任务重定向到其他队列但不使用它
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
参数不允许工作人员从指定队列消费
我希望创建一个任务,它会在出现错误时将自身重定向到其他队列。这样做的目的是将失败的任务消息与所有任务数据一起存储,例如使用 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
参数不允许工作人员从指定队列消费