我如何删除所有挂起的任务,而不知道每个任务的task_id ?
当前回答
芹菜2。X和3.x:
例如,当使用带-Q参数的worker来定义队列时
celery worker -Q queue1,queue2,queue3
然后芹菜清除将不会工作,因为您不能传递队列参数给它。它只会删除默认队列。 解决方案是用——purge参数启动你的worker,就像这样:
celery worker -Q queue1,queue2,queue3 --purge
然而,这将运行worker。
另一个选择是使用芹菜的amqp子命令
celery amqp queue.delete queue1
celery amqp queue.delete queue2
celery amqp queue.delete queue3
其他回答
芹菜2。X和3.x:
例如,当使用带-Q参数的worker来定义队列时
celery worker -Q queue1,queue2,queue3
然后芹菜清除将不会工作,因为您不能传递队列参数给它。它只会删除默认队列。 解决方案是用——purge参数启动你的worker,就像这样:
celery worker -Q queue1,queue2,queue3 --purge
然而,这将运行worker。
另一个选择是使用芹菜的amqp子命令
celery amqp queue.delete queue1
celery amqp queue.delete queue2
celery amqp queue.delete queue3
芹菜3+:
CLI:
$ celery -A proj purge
编程:
>>> from proj.celery import app
>>> app.control.purge()
http://docs.celeryproject.org/en/latest/faq.html#how-do-i-purge-all-waiting-tasks
从文档中可以看出:
$ celery -A proj purge
or
from proj.celery import app
app.control.purge()
(编辑:更新与当前的方法。)
芹菜4 + 芹菜清除命令清除所有已配置的任务队列
celery -A *APPNAME* purge
编程:
from proj.celery import app
app.control.purge()
所有挂起的任务将被清除。 参考:celerydoc
如果你想删除所有挂起的任务,以及活动和保留的任务,以完全停止Celery,这对我来说是有效的:
from proj.celery import app
from celery.task.control import inspect, revoke
# remove pending tasks
app.control.purge()
# remove active tasks
i = inspect()
jobs = i.active()
for hostname in jobs:
tasks = jobs[hostname]
for task in tasks:
revoke(task['id'], terminate=True)
# remove reserved tasks
jobs = i.reserved()
for hostname in jobs:
tasks = jobs[hostname]
for task in tasks:
revoke(task['id'], terminate=True)
推荐文章
- RabbitMQ / AMQP:单队列,同一消息的多个消费者?
- 从RabbitMQ中删除所有队列?
- RabbitMQ与通道和连接之间的关系
- 平行的。ForEach vs Task。运行和任务。WhenAll
- 重新安装后无法访问RabbitMQ web管理界面
- UI线程上的任务继续
- 删除芹菜/ rabbitmq中所有挂起的任务
- 任务有什么用。FromResult< result >
- rails耙任务是否提供对ActiveRecord模型的访问?
- 为什么我们需要像RabbitMQ这样的消息代理而不是像PostgreSQL这样的数据库?
- 为什么使用异步和返回等待,当你可以直接返回任务<T> ?
- 等待不同结果的多个任务
- 正确使用任务时。运行,当只是async-await
- 任务与线程的差异
- 如何安全地调用c#异步方法没有等待