如何获取已经发送到芹菜的任务列表?

时间:2019-08-23 10:41:26

标签: django celery celery-task

我无法获取Celery中的任务列表(活动,计划的..)。

使用django,我的Web应用程序每次发送带有芹菜的任务:

tasksend = calcul.delay()

如果它已经在芹菜中进行了,我不想发射它。

因此,我想列出Celery收到的尚未完成的任务:如果我的“ calcul”任务已经在进行中,那么我将无法再询问calcul.delay()

我已经搜索了很多东西,Retrieve list of tasks in a queue in Celery中的回答对我的芹菜版本不利。

我使用: -Django 2.0.13 -python 3.4.2 -带有redis的芹菜v4.3.0

我已经尝试过:

def inspect(method):
    app = Celery('app', broker='redis://localhost:6379')
    inspect_result = getattr(app.control.inspect(), method)()
    app.close()
    return inspect_result

和print(inspect('active'))始终返回None(通过'registered'获得相同的结果)

我希望能够获得正在进行的任务的名称并以芹菜安排,知道吗?

1 个答案:

答案 0 :(得分:0)

我之前遇到过同样的问题,下面的代码是我用来检查任务的代码。

i = app.control.inspect()

if i.active():
    for k, v in i.active().items():
        print(len(i.active()))
        print(len(v))

我在这里使用Rabbitmq代替Redis来排队,不确定是否可以起作用,但是芹菜包装应该“照应”。

希望这会有所帮助!