【发布时间】:2014-07-23 00:02:18
【问题描述】:
我目前的 celery 设置有大约 10,000 个计划任务。我没有意识到计划任务是什么,并决定提前几个月使用它们发送后续电子邮件。
回想起来,将任务安排在未来超过 1 小时可能永远不是一个好主意,因为每次重新启动工作器时,它都必须重新接收来自 rabbitMQ 的每个计划任务,然后它们都只是坐在记忆。
我的问题是,如果我必须撤销一项任务,它不仅仅是删除它。任务保留在内存中,但撤销队列现在包含任务的 ID。当它准备执行时,celery 会检查它是否被撤销,如果是,它将在此时撤销它。
但是,直到那时,该任务仍将保留在内存中,如果我随时重新启动我的工作人员,撤销队列将被清除,因为我没有使其持久化。
如何从我的 celery worker 中永久删除任务?我基本上只需要向rabbitMQ发送一个确认的消息,这样rabbit就会一劳永逸地删除它,如果我重新启动芹菜它就不会回来了。
我查看了文档和源代码,并尝试自己在 shell 中执行此操作,但我无法确定将任务提交给 rabbitMQ 然后永远弹出它的正确位置。
【问题讨论】:
-
你找到方法了吗?
标签: python rabbitmq celery amqp django-celery