2016-01-21 9 views
10

में पहले से बनाई गई नौकरी को अद्यतन करना संभव है हाय मैं Kue का उपयोग कर नौकरियां बना रहा हूं।क्या क्यू नोड जेएस

jobs.create('myQueue', { 'title':'test', 'job_id': id ,'params': params }) 
      .delay(milliseconds) 
      .removeOnComplete(true) 
      .save(function(err) { 
       if (err) { 
        console.log('jobs.create.err', err); 
       } 

     }); 

प्रत्येक नौकरी में देरी का समय होता है, आमतौर पर यह 3 घंटे होता है।

अब मैं प्रत्येक आने वाले अनुरोध को जांचना चाहता हूं जो एक नया काम बनाना चाहता है और आईडी प्राप्त करना चाहता है।

जैसा कि आप उपरोक्त कोड से देख सकते हैं, जब मैं नौकरी बना रहा हूं तो मैं नौकरी के लिए नौकरी आईडी जोड़ूंगा।

तो अब मैं कतार में मौजूदा नौकरियों के job_id s के साथ आने वाली आईडी को देखना चाहता हूं और यदि मिलान आईडी मिलती है तो नए पैरा के साथ मौजूदा नौकरी अपडेट करें।

इसलिए मेरी नौकरी कतार में हर बार अद्वितीय job_id होगा :)।

क्या यह संभव है? , मैंने बहुत कुछ खोजा है लेकिन कोई मदद नहीं मिली है, मैंने क्यू json API की जांच की है। लेकिन यह केवल नौकरियां पुनर्प्राप्त और प्राप्त कर सकता है, मौजूदा रिकॉर्ड अपडेट नहीं कर सकता है।

अग्रिम धन्यवाद।

+0

क्या आपने अद्यतन विधि का प्रयास किया है? https://github.com/Automattic/kue/blob/master/lib/queue/job.js#L807 – Hugeen

+0

नौकरी बनाने से पहले जीईटी/नौकरी/ पर जेसन एपीआई का उपयोग करें। यदि यह मौजूद है (स्थिति 200), नौकरी अद्यतन करें। यदि यह अस्तित्व में नहीं है (स्थिति 404), तो नौकरी बनाएं। – Monkpit

उत्तर

11

यह दस्तावेज़ीकरण और उदाहरणों में उल्लेख नहीं है, लेकिन के लिए update विधि है।

// you have the job_id 
var job_id_to_update = 1; 
// get delayed jobs 
jobs.delayed(function(err, ids) { 
    ids.forEach(function(id) { 
    kue.Job.get(id, function(err, job) { 
     // check if this is job we want 
     if (job.data.job_id === job_id_to_update) { 
      // change job properties 
      job.data.title = 'set another title'; 
      // save changes 
      job.update(); 
     } 
    }); 
    }); 
}); 

पूर्ण उदाहरण here है:

आप इस तरह से job_id से अपने काम को अपडेट कर सकते हैं।

अद्यतन: आप "मूल" नौकरी आईडी का उपयोग करने पर भी विचार कर सकते हैं, जो कि क्यू के लिए जाना जाता है। जब आप काम बनाते हैं तो आप कार्य आईडी प्राप्त कर सकते हैं:

var myjob = jobs.create('myQueue', ... 
    .save(function(err) { 
     if (err) { 
      console.log('jobs.create.err', err); 
     } 
     var job_id = myjob.id; 
     // you can send job_id back to the client 
}); 

अब आप सीधे सूची पर पाशन के बिना काम संशोधित कर सकते हैं:

kue.Job.get(id, function(err, job) { 
    // change job properties 
    job.data.title = 'set another title'; 
    // save changes 
    job.update(); 
}); 
+0

क्या यह 'देरी' अवधि अपडेट करता है? अपडेट के पहले और बाद में मेरा कोड नीचे है, देरी वही बना हुआ है – Sahas