2012-01-16 16 views
10

devlet ve django-kereviz: kereviz günlüktenGörev Django-kereviz kullanmak ve böyle bir görev var

python manage.py shell 

r = tasks.TestTask().delay() 

görüyorum görevdir:

class TestTask(Task): 
    name = "enabler.test_task" 

    def run(self, **kw): 
     debug_log("begin test task") 
     time.sleep(5) 
     debug_log("end test task") 

    def on_success(self, retval, task_id, args, kwargs): 
     debug_log("on success") 

    def on_failure(self, retval, task_id, args, kwargs): 
     debug_log("on failure") 

Ben görevin çalışmasını django kabuğunu kullanın infaz: Ancak

[2012-01-16 08:13:29,362: INFO/MainProcess] Got task from broker: enabler.test_task[e2360811-d003-45bc-bbf8-c6fd5692c32c] 
[2012-01-16 08:13:29,390: DEBUG/PoolWorker-3] begin test task 
[2012-01-16 08:13:34,389: DEBUG/PoolWorker-3] end test task 
[2012-01-16 08:13:34,390: DEBUG/PoolWorker-3] on success 
[2012-01-16 08:13:34,390: INFO/MainProcess] Task enabler.test_task[e2360811-d003-45bc-bbf8-c6fd5692c32c] succeeded in 5.00004410744s: None 

Ben cehennemden görev durumunu kontrol zaman hep var Askıdaki:

Görev iyi yapılmış olsa da

.

Neden böyle oluyor?

cevap

10

Hangi kereviz sürümünü kullanıyorsunuz? Bu partiye gerçekten geç olduğumu fark ettim, ancak bu durum gelecekte birilerine yardım ederse. Görev ignore_result (varsayılan olarak en son sürümde) olarak ayarlanmışsa, PENDING konumunda kalır ve BAŞARISIZ'a gitmez.

burada Onların dokümantasyon,

@celery.task(ignore_result=True) 
def mytask(...) 
    something() 

Sen Başka sorunuz varsa bana bildirin, bunu kendiniz here görebilirsiniz. Eğer zaman el şöyle durumunu güncelleyebilirsiniz true olarak ayarlanır ignore_result olsalar bile aynı

** başka not, ilerleme çubukları için bu nitelikteki

from celery import current_task 
current_task.update_state(state='PROGRESS', meta={'description': 'Doing some task', 'current': 59, 'tota': 73}) 

şey - Ayrıca kereviz en dokümantasyon sayfasında bulunan .

+0

Teşekkürler, bayım! –