Django芹菜进度条
我使用:Django芹菜进度条,django,django-celery,Django,Django Celery,我使用: 芹菜 Django芹菜 兔子 我可以在Django管理页面中看到我的所有任务,但目前只有几个状态,如: 收到 重试 撤销 成功 开始 失败 未决 这对我来说还不够。是否可以将有关正在运行的进程的更多详细信息添加到管理页面?如进度条或完工作业计数器等 我知道如何使用芹菜日志功能,但出于某些原因,GUI在我的情况下更好 那么,是否可以将一些跟踪信息发送到Django芹菜管理页面?我自己开始尝试解决这个问题。首先严格按照上的说明定义进度状态,然后只需在模板中插入一个js即可更新进度条。下
- 收到
- 重试
- 撤销
- 成功
- 开始
- 失败
- 未决
那么,是否可以将一些跟踪信息发送到Django芹菜管理页面?我自己开始尝试解决这个问题。首先严格按照上的说明定义进度状态,然后只需在模板中插入一个js即可更新进度条。下面是我使用您的设置报告Django后端的最小进度。我仍然是Django n00b,这是我第一次吃芹菜,所以这可能是优化的
from time import sleep
from celery import task, current_task
from celery.result import AsyncResult
from django.http import HttpResponse, HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.utils import simplejson as json
from django.conf.urls import patterns, url
@task()
def do_work():
""" Get some rest, asynchronously, and update the state all the time """
for i in range(100):
sleep(0.1)
current_task.update_state(state='PROGRESS',
meta={'current': i, 'total': 100})
def poll_state(request):
""" A view to report the progress to the user """
if 'job' in request.GET:
job_id = request.GET['job']
else:
return HttpResponse('No job id given.')
job = AsyncResult(job_id)
data = job.result or job.state
return HttpResponse(json.dumps(data), mimetype='application/json')
def init_work(request):
""" A view to start a background job and redirect to the status page """
job = do_work.delay()
return HttpResponseRedirect(reverse('poll_state') + '?job=' + job.id)
urlpatterns = patterns('webapp.modules.asynctasks.progress_bar_demo',
url(r'^init_work$', init_work),
url(r'^poll_state$', poll_state, name="poll_state"),
)
感谢@Florian Sesser为您提供的示例 我制作了一个完整的Django应用程序,向网站上的用户显示创建1000个对象的进度
每个人都可以下载并使用它 我会推荐一个叫做这个的库。它的设计目的是尽可能轻松地将基本的端到端进度条设置放入django应用程序中,尽可能少地搭建脚手架,同时还支持前端的大量定制(如果需要)。自述文件中提供了大量入门文档和参考资料
充分披露:我是上述库的作者/维护者。在较新版本中,我认为习惯用法是执行
@task(bind=True)
,然后调用self.update\u state
。性能方面我不确定哪一个更好。谢谢你的博客,但是代码不再可用。这是项目文件夹:你能提供一个工作示例吗?我一直在吃芹菜-progress@MuhammadUmarFarooq请随时提交芹菜进度中的一个问题,以及您面临的具体问题,我会尽快查看,先生,您可以提供github演示,而不是解决单个问题。因此,用户可以根据库版本签出所需的提交。谢谢,或者请只提及构建演示的版本,我不确定,但我认为django/Cellery的最新版本是导致问题的原因。最新的演示正在django 3.0.5和Cellery 4.4.0上运行,我相信这是截至目前为止最新的@Muhammadumarfarookt该链接已过时