you taggit tag register invalid forget did django django-celery

taggit - Barra de progreso Django-Apio



invalid block tag on line 7 static did you forget to register or load this tag (4)

Yo suelo:

  1. Apio
  2. Django-Apio
  3. RabbitMQ

Puedo ver todas mis tareas en la página de administración de Django, pero en este momento solo tiene algunos estados, como:

  • RECIBIDO
  • PROCESAR DE NUEVO
  • REVOCADO
  • ÉXITO
  • EMPEZADO
  • FRACASO
  • PENDIENTE

No es suficiente información para mí. ¿Es posible agregar más detalles sobre un proceso en ejecución a la página de administración? Como barra de progreso o contador de trabajos terminados, etc.

Sé cómo usar la función de registro de apio, pero una GUI es mejor en mi caso por algunas razones.

Entonces, ¿es posible enviar alguna información de rastreo a la página de administración de Django-Celery?


Aquí está mi backend de Django de informe de progreso mínimo usando tu configuración. Sigo siendo un Django n00b y es la primera vez que me meto con Celery, por lo que probablemente pueda optimizarse.

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"), )


Estoy empezando a tratar de resolver esto por mí mismo. Comience por definir un estado de PROGRESO exactamente como se explica en la guía de usuario de Celery , luego todo lo que necesita es insertar un js en su plantilla que actualizará su barra de progreso.



Recomendaría una biblioteca llamada celery-progress para esto. Está diseñado para hacer que sea tan fácil como sea posible colocar una configuración básica de barra de progreso de extremo a extremo en una aplicación de django con el menor número de andamios posible, al mismo tiempo que admite una gran personalización en el front-end, si así lo desea. Un montón de documentos y referencias para comenzar en el README.

Revelación completa: soy el autor / mantenedor de dicha biblioteca.