我用:Django的芹菜进度条
- 芹菜
- Django的芹菜
- 的RabbitMQ
我可以看到我在Django管理页面中的所有任务,但此刻它只有几个州,如:
- 已收到
- 重试
- 撤销的
- 成功
- 已启动
- 故障
- PENDING
它没有足够的信息对我来说。是否可以向管理页面添加有关正在运行的进程的更多详细信息?像进度条或结束作业对抗等
我知道如何使用芹菜记录功能,但GUI是在我的情况下,因某些原因更好。
那么,是否可以发送一些跟踪信息到Django-Celery管理页面?
我用:Django的芹菜进度条
我可以看到我在Django管理页面中的所有任务,但此刻它只有几个州,如:
它没有足够的信息对我来说。是否可以向管理页面添加有关正在运行的进程的更多详细信息?像进度条或结束作业对抗等
我知道如何使用芹菜记录功能,但GUI是在我的情况下,因某些原因更好。
那么,是否可以发送一些跟踪信息到Django-Celery管理页面?
我开始尝试自己弄明白这一点。首先按照Celery userguide中的说明完全定义PROGRESS状态,然后您只需在模板中插入一个js来更新进度条。
这是我最小的进度报告Django后端使用您的设置。我仍然是一个Django n00b,这是我第一次搞乱Celery,所以这可能会被优化。
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应用程序,显示在http://iambusychangingtheworld.blogspot.com/2013/07/django-celery-display-progress-bar-of.html
每个人创造1000个对象,以用户的进度可以下载并使用它!
感谢您的博客,但代码不再可用。 – Demonedge
这里是项目文件夹:https://www.dropbox.com/sh/o9p92yxhpdx58yh/AABBpO912y3NKgXXU4QeLHAFa?dl=0 –
在新版本上,我认为这个习惯用法是'@task(bind = True)',然后调用'self.update_state'。在性能方面我不确定哪个更好。 – dashesy