Django芹菜task_id为null

时间:2013-08-30 21:46:09

标签: python django celery django-celery

我正在尝试在Django中实现一个进度条,我正在从我发现http://djangosnippets.org/snippets/2898/的代码片段中获取引用,但我的努力是在风向标,因为我不知道发生了什么,但是{{1当执行方法任务时,celery总是为null,这是我的代码:

task_id

因此,当我在def add_categoria(request): if request.POST: form_cat = CategoriaModelForm(request.POST,request.FILES) if form_cat.is_valid(): file = request.FILES['imagen'] job = upload_image_categoria(request).delay() request.session['task_id'] = job.id return HttpResponse(json.dumps({'task_id':job.id})) else: return HttpResponseBadRequest(json.dumps(form_cat.errors), mimetype="application/json") else: form = CategoriaModelForm() return render_to_response("ventas/form.html",{'form':form},context_instance=RequestContext(request)) @task() def upload_image_categoria(request): form = CategoriaModelForm(request.POST, request.FILES) path = MEDIA_ROOT+'/categorias/%s' % form.cleaned_data['imagen'].name file = request.FILES['imagen'] destination = open(path, 'wb+') porcentaje = 0 acum = 0 for chunk in file.chunks(): time.sleep(0.1) current_task.update_state(state='PROGRESS', meta={'current': porcentaje}) acum += len(chunk) porcentaje = int((acum*100)/file.size) destination.write(chunk) @csrf_exempt def upload_state(request): """ A view to report the progress to the user """ data = 'Fail' if request.is_ajax(): if 'task_id' in request.POST.keys() and request.POST['task_id']: task_id = request.POST['task_id'] task = AsyncResult(task_id) data = task.result or task.state else: data = 'No task id' else: data = 'This is not an ajax request' json_data = json.dumps(data) return HttpResponse(json_data, mimetype='application/json') upload_image_categoria报告进度条状态时,我总是得到这个回溯:

current_task.update_state(state='PROGRESS', meta={'current': porcentaje})

这是我对于芹菜选项的settings.py:

Traceback:
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
      115.                         response = callback(request, *callback_args, **callback_kwargs)
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
      25.                 return view_func(request, *args, **kwargs)
    File "/Users/Tone/Documents/Proyectos/dgp/ventas/forms.py" in add_categoria
      446.             job = upload_image_categoria(request).delay()
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/celery/app/task.py" in __call__
      330.             return self.run(*args, **kwargs)
    File "/Users/Tone/Documents/Proyectos/dgp/ventas/forms.py" in upload_image_categoria
      462.         current_task.update_state(state='PROGRESS',meta={'current': i, 'total': 100})
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/celery/app/task.py" in update_state
      695.         self.backend.store_result(task_id, meta, state)
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/celery/backends/base.py" in store_result
      282.         self._store_result(task_id, result, status, traceback, **kwargs)
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/celery/backends/amqp.py" in _store_result
      128.                             routing_key=task_id.replace('-', ''),

    Exception Type: AttributeError at /ventas/categorias/add/
    Exception Value: 'NoneType' object has no attribute 'replace'

所以我不知道发生了什么,工人是正确的,设置(我猜,是正确的)并且我总是得到相同的,我在其他一些项目中用相同的设置证明(这个项目特别是http://iambusychangingtheworld.blogspot.com.es/2013/07/django-celery-display-progress-bar-of.html )它完美地工作所以我不知道为什么不在这里,我缺少的东西?任何想法都会很感激。

问候!

0 个答案:

没有答案