【发布时间】:2017-02-16 03:40:40
【问题描述】:
我正在制作进度条,但“current_task.update_state()”不起作用!! 这是我的“task.py”定义的简单示例。
from celery import shared_task, current_task
@shared_task
def mytask(a):
list_A = [1, 2, 3]
result = []
for i in list_A:
m = a * i
result.append(m)
process_percent = int(100 * len(result) / len(list_A))
current_task.update_state(state='PROGRESS',
meta={'process_percent':process_percent})
return result
当我在 ajax 中使用“process_percent”时,它总是“未定义”。
状态总是返回“PENDING”,但在 celery 控制台返回“结果”(“celery -A myapp worker --loglevel=info --pool=solo”)
所以,我可以看到任务结果了。
但是,我不知道为什么 'process_percent' 没有更新....
我认为“current_task.update_state”不起作用......
这是我的芹菜设置。
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')
app = Celery('myapp', broker='amqp://guest@127.0.0.1:5672//', backend='amqp')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
【问题讨论】: