2012-01-16 35 views
10

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

python manage.py shell 

r = tasks.TestTask().delay() 

अजवाइन लॉग से मुझे लगता है कि काम है:

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

मैं चलाने के लिए कार्य Django खोल का उपयोग लंबित

[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 

हालांकि जब मैं नरक से कार्य राज्य जाँच मैं हमेशा मिल गया: निष्पादित

>>> r = tasks.TestTask().delay() 
>>> r 
<AsyncResult: e2360811-d003-45bc-bbf8-c6fd5692c32c> 
>>> r.state 
'PENDING' 
>>> r.state 
'PENDING' 
>>> r.state 
'PENDING' 
>>> r.state 
'PENDING' 

भले ही कार्य अच्छी तरह से निष्पादित हो।

ऐसा क्यों होता है?

उत्तर

10

आप अजवाइन का किस संस्करण का उपयोग कर रहे हैं? मुझे पता है कि मैं इस पार्टी के लिए वास्तव में देर से हूं लेकिन अगर यह भविष्य में किसी की मदद करता है। यदि कार्य ignore_result पर सेट है (जो कि नवीनतम संस्करण में डिफ़ॉल्ट रूप से है) तो यह PENDING पर रहेगा और सफलता पर नहीं जाएगा।

उनके यहाँ प्रलेखन,

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

तुम खुद here देख सकते हैं, आप किसी भी अन्य प्रश्न हैं मुझे बताएँ।

** इसके अलावा एक और नोट, तुम सही पर सेट किया ignore_result है, भले ही आप मैन्युअल रूप से कभी इतना की तरह राज्य को अपडेट कर सकते,

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

प्रगति सलाखों के लिए कि प्रकृति के कुछ - भी अजवाइन के दस्तावेज़ पृष्ठ पर पाया ।

+0

धन्यवाद, ठीक है महोदय! –

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