Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django芹菜进度条_Django_Django Celery - Fatal编程技术网

Django芹菜进度条

Django芹菜进度条,django,django-celery,Django,Django Celery,我使用: 芹菜 Django芹菜 兔子 我可以在Django管理页面中看到我的所有任务,但目前只有几个状态,如: 收到 重试 撤销 成功 开始 失败 未决 这对我来说还不够。是否可以将有关正在运行的进程的更多详细信息添加到管理页面?如进度条或完工作业计数器等 我知道如何使用芹菜日志功能,但出于某些原因,GUI在我的情况下更好 那么,是否可以将一些跟踪信息发送到Django芹菜管理页面?我自己开始尝试解决这个问题。首先严格按照上的说明定义进度状态,然后只需在模板中插入一个js即可更新进度条。下

我使用:

  • 芹菜
  • Django芹菜
  • 兔子
  • 我可以在Django管理页面中看到我的所有任务,但目前只有几个状态,如:

    • 收到
    • 重试
    • 撤销
    • 成功
    • 开始
    • 失败
    • 未决
    这对我来说还不够。是否可以将有关正在运行的进程的更多详细信息添加到管理页面?如进度条或完工作业计数器等

    我知道如何使用芹菜日志功能,但出于某些原因,GUI在我的情况下更好


    那么,是否可以将一些跟踪信息发送到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该链接已过时