我用: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