我无法获取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'获得相同的结果)
我希望能够获得正在进行的任务的名称并以芹菜安排,知道吗?
答案 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来排队,不确定是否可以起作用,但是芹菜包装应该“照应”。
希望这会有所帮助!