gpt4 book ai didi

python - celery update_state() 不工作

转载 作者:太空宇宙 更新时间:2023-11-04 05:13:57 31 4
gpt4 key购买 nike

我正在制作进度条,但“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

当我将 'process_percent' 与 ajax 一起使用时,它始终是 'undefined'。
并且状态总是返回“PENDING”,但在 celery 控制台返回“结果”(“celery -A myapp worker --loglevel=info --pool=solo”)
这样,我就可以看到任务结果了。
但是,我不知道为什么 'process_percent' 没有更新....
我认为“current_task.update_state”不工作......这是我的 celery 设置。

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)

最佳答案

可能您需要一个statedb:see docs for v3.1docs for v4

worker_state_db = '/tmp/celery_state'

关于“amqp”后端,请参阅enter link description here :“不要在生产中使用”。

我建议使用像 Redis 这样的后端,或者至少为此使用数据库。

关于python - celery update_state() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42264440/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com