2011-09-11 34 views
14

मैं का उपयोग करें:Django-अजवाइन प्रगति बार

  1. अजवाइन
  2. Django-अजवाइन
  3. RabbitMQ

मैं Django व्यवस्थापक पृष्ठ में अपने सभी कार्यों को देख सकते हैं, लेकिन इस समय इसमें कुछ राज्य हैं, जैसे:

  • प्राप्त
  • पुन: प्रयास
  • रद्द की
  • सफलता
  • शुरू
  • विफलता

लंबित यह मेरे लिए पर्याप्त सूचना नहीं है। क्या व्यवस्थापक पृष्ठ पर चल रही प्रक्रिया के बारे में अधिक जानकारी जोड़ना संभव है? जैसा प्रगति बार या समाप्त नौकरियों का मुकाबला आदि

मैं कैसे अजवाइन प्रवेश समारोह का उपयोग करने के पता है, लेकिन एक जीयूआई कुछ कारणों के लिए मेरे मामले में बेहतर है।

तो, क्या Django-Celery व्यवस्थापक पृष्ठ पर कुछ ट्रेसिंग जानकारी भेजना संभव है?

उत्तर

8

मैं इसे स्वयं समझने की कोशिश कर रहा हूं। एक प्रोजेक्ट स्थिति को परिभाषित करके शुरू करें जैसा कि Celery userguide पर बताया गया है, तो आपको बस अपने टेम्पलेट में जेएस डालने की ज़रूरत है जो आपकी प्रगति पट्टी को अपडेट करेगी।

28

यहां मेरी न्यूनतम प्रगति-रिपोर्टिंग 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"), 
) 
+2

नए संस्करणों पर मुझे लगता है कि मुहावरे '@ टास्क (बाइंड = ट्रू) 'करना है और फिर' self.update_state' 'को कॉल करना है। प्रदर्शन के अनुसार मुझे यकीन नहीं है कि कौन सा बेहतर है। – dashesy

5

धन्यवाद उदाहरण के लिए @ फ्लोरियन सेसर!

मुझे लगता है कि कम से http://iambusychangingtheworld.blogspot.com/2013/07/django-celery-display-progress-bar-of.html

हर कोई उन के लिए 1000 वस्तुओं को बनाने की प्रगति को दिखाने डाउनलोड करने और इसका इस्तेमाल कर सकते हैं एक पूरा Django एप्लिकेशन बनाया!

+1

ब्लॉग के लिए धन्यवाद, लेकिन कोड अब उपलब्ध नहीं है। – Demonedge

+0

यहां प्रोजेक्ट फ़ोल्डर है: https://www.dropbox.com/sh/o9p92yxhpdx58yh/AABBpO912y3NKgXXU4QeLHAFa?dl=0 –

संबंधित मुद्दे