क्या नोड.जेएस के लिए नौकरी अनुसूचक पुस्तकालय है? [बन्द है]


155

क्या पुस्तकालय की तरह कुछ क्रोन है जो मुझे निश्चित समय पर चलने के लिए कुछ फ़ंक्शन शेड्यूल करने देगा (15:30 उदाहरण के लिए, इसके अलावा x घंटे नहीं)? अगर इस तरह की लाइब्रेरी नहीं है तो इसे कैसे लागू किया जाना चाहिए? क्या मुझे हर सेकंड कॉल करने के लिए कॉलबैक सेट करना चाहिए और समय की जांच करनी चाहिए और समय के लिए निर्धारित नौकरियों को शुरू करना चाहिए या क्या?


4
नोड-क्रोन एक बहुत अच्छा विकल्प लगता है
जेटीआर

var अनुसूची = आवश्यकता ('नोड-शेड्यूल'); सबसे अच्छी चीज है। चियर्स !!!
सौम्यजीत

जवाबों:


122

नोड-क्रोन सिर्फ वही करता है जो मैंने वर्णित किया है


4
क्या आप app.js / script.js में क्रोनजोब घोषणाएँ लिखते हैं?
अरवन

क्या नोड-क्रॉन आपको नोड.जेएस से सिस्टम क्रोन नौकरियों को संपादित करने की अनुमति देता है? क्या यह नोड प्रक्रिया पर निर्भर है? या यह आपकी मुख्य प्रक्रिया समाप्त होने के बाद भी आपको कार्यक्रम चलाने की अनुमति देगा?
अजार

5
@ अजर नं।, नोडज प्रक्रिया समाप्त होने के बाद, सभी नौकरियां खो जाएँगी। नोड-क्रोन के साथ कोई क्रोन तालिका नहीं भेजी गई है
अपवोट

1
मुझे लगता है कि @ChrisC। अगर मैं किसी ढांचे का उपयोग नहीं कर रहा हूं, तो मैं क्रोन को घोषित करता हूं app.js। में sails.jsमैं इसेbootstrap
Arvan

2
@ अगर आप रुचि रखते हैं, तो मैंने वास्तव में agendaयहाँ वाटरलाइन सपोर्ट को जोड़ने के लिए काम करना शुरू किया : github.com/mikermcneil/agenda (शाब्दिक रूप से अभी शुरू
हुआ-

44

नोड-शेड्यूल एक क्रोन-जैसा और नॉन-क्रॉन-जैसे जॉब शेड्यूलर के लिए नोड।


2
यह कभी-कभी भ्रमित करने वाले crontab सिंटैक्स से बचने का प्रबंधन करता है, और मेरी राय में थोड़ा अधिक पठनीय है।
साइमन ईस्ट

एजेंडा की तरह यह दृढ़ता प्रदान करता है 0.1.13
drdrej

5
नोड-शेड्यूल दृढ़ता प्रदान नहीं करता है। डॉक्स के अनुसार: Note that node-schedule is designed for in-process scheduling, i.e. scheduled jobs will only fire as long as your script is running, and the schedule will disappear when execution completes.
माइक हेडमैन

34

एजेंडा नोड के लिए एक लाइटवेट जॉब शेड्यूलिंग है। इससे आपको मदद मिलेगी।


1
एजेंडा एक दृढ़ परत (मोंगो) के साथ नोड-क्रोन पर आधारित है। इसलिए उपरोक्त उत्तर बेहतर है।
drdrej

51
स्पष्ट करने के लिए, एजेंडा के लेखक के रूप में, यह वास्तव में नोड-क्रोन पर आधारित नहीं है ...
रयान

1
एजेंडा लाइब्रेरी एक और केवल सर्वश्रेष्ठ पुस्तकालय है क्योंकि सेटअप सरल है और उपयोगकर्ता के लिए उपयोग आसान है। कुडोस @ रयान
विमलराज सेल्वम

4
मैंने agendaअसंगत व्यवहार पाया है और इसका उपयोग करने की सलाह नहीं दूंगा। अपने खुद के कॉल करने के लिए खुले मुद्दों और पीआर की जांच करें।
रस्बीयर

2
ज्ञात हो, एजेंडा उत्पादन तैयार नहीं है। इसमें मेमोरी लीक मुद्दे और मुद्दों की जांच है। अभी भी बहुत सारे कीड़े हैं। यह तैयार होने पर आशाजनक लगता है।
सेबस्टियन

15

later.js एक बहुत अच्छा जावास्क्रिप्ट "अनुसूचक" पुस्तकालय है। Node.js या वेब ब्राउज़र में चल सकता है।


3
मैंने इस धागे में कुछ सुझावों की कोशिश की, लेकिन इस मॉड्यूल को मैंने सबसे अधिक उपयोगकर्ता के अनुकूल और सीधे fwd के रूप में पाया .. धन्यवाद!
जीन बो

12

मैं क्यू का उपयोग कर रहा हूं: https://github.com/learnboost/kue । यह बहुत अच्छा है।

आधिकारिक विशेषताएं और मेरी टिप्पणियाँ:

  1. नौकरियों में देरी।
    • यदि आप नौकरी को एक विशेष समय पर चलने देना चाहते हैं, तो उस समय और अब के बीच मिलीसेकंड की गणना करें। कॉल job.delay (मिलीसेकंड) (डॉक्टर मिनट कहता है, जो गलत है।) "jobs.promote ();" जोड़ना न भूलें जब आप नौकरी करते हैं।
  2. नौकरी की घटना और प्रगति पबसुब।
    • मैं इसे नहीं समझता।
  3. अमीर एकीकृत यूआई।
    • बहुत उपयोगी। आप एकीकृत UI में नौकरी की स्थिति (किया, चल रहा है, विलंबित) की जांच कर सकते हैं और किसी भी कोड को लिखने की आवश्यकता नहीं है। और आप UI में पुराने रिकॉर्ड हटा सकते हैं।
  4. अनंत स्क्रॉल
    • कभी-कभी काम नहीं कर रहा है। रिफ्रेश करना है।
  5. यूआई प्रगति संकेत
    • समय लेने वाली नौकरियों के लिए अच्छा है।
  6. नौकरी विशिष्ट लॉगिंग
    • क्योंकि वे नौकरियों में देरी कर रहे हैं, आपको नौकरी में उपयोगी जानकारी लॉग इन करनी चाहिए और बाद में यूआई के माध्यम से जांच करनी चाहिए।
  7. रेडिस द्वारा संचालित
    • बहुत उपयोगी। जब आप अपने नोड.जेएस ऐप को फिर से शुरू करते हैं, तो सभी नौकरी रिकॉर्ड अभी भी हैं और निर्धारित नौकरियां भी निष्पादित होंगी!
  8. वैकल्पिक पुनर्प्रयास
    • अच्छा लगा।
  9. पूर्ण-पाठ खोज क्षमताओं
    • अच्छा।
  10. प्रतिष्ठित JSON एपीआई
    • अच्छा लगता है, लेकिन मैं इसका इस्तेमाल कभी नहीं करता।

संपादित करें:

  1. क्यू पुस्तकालय की तरह एक क्रोन नहीं है।
  2. डिफ़ॉल्ट रूप से क्यू नौकरी का समर्थन नहीं करता है जो बार-बार चलता है (जैसे हर रविवार)।

6
क्यू एक नौकरी कतार है, एक अनुसूचक नहीं।
लियोनिद बेस्चस्टानी

1
@LeonidBeschastny कुए एक नौकरी कतार है। और यह एक शेड्यूलर भी है, क्योंकि यह "मुझे कुछ समय पर चलने के लिए कुछ फ़ंक्शन शेड्यूल करने दे सकता है"।
विंस युआन

मैंने सोचा कि क्यू नौकरियों में केवल देरी हो सकती है, लेकिन एक निश्चित समय के लिए निर्धारित नहीं है।
लियोनिद बेस्चस्टानी

@LeonidBeschastny आप सही हैं। क्यू एक निश्चित समय के लिए नौकरी निर्धारित करने के लिए एपीआई प्रदान नहीं करता है। लेकिन जैसा कि मैंने उल्लेख किया है, "यदि आप एक विशेष समय पर नौकरी को चलाने देना चाहते हैं, तो उस समय और अब के बीच मिलीसेकंड की गणना करें। कॉल job.delay (मिलीसेकंड) (डॉक मिनट कहता है, जो गलत है।)" बहुत आसान है। ।
विंस युआन

1
आप क्यू-शेड्यूलर की कोशिश कर सकते हैं, जो कि एजंडा के समान है
फ्रूच

9

नोड- Crontab आपको नोड से सिस्टम क्रोन नौकरियों को संपादित करने की अनुमति देता है। इस लाइब्रेरी का उपयोग करने से आप अपनी मुख्य प्रक्रिया समाप्ति के बाद भी कार्यक्रम चला सकते हैं। डिस्क्लेमर: मैं डेवलपर हूं।


तो यह बनी रहती है यदि नोड सर्वर रीसेट है?
जोंपरल


हां, नौकरियां बरकरार हैं।
ब्लोगो

इसका GPL लाइसेंस प्राप्त है, इसलिए किसी व्यावसायिक परियोजना में उपयोग करने योग्य नहीं है।
drdrej

5
लाइसेंस अब MIT
Blago

8

आप टाइमएक्स का उपयोग कर सकते हैं

यह उपयोग करने के लिए सरल है, हल्के वजन, कोई निर्भरता नहीं है, क्रोन पर एक बेहतर सिंटैक्स है, जो मिलीसेकंड में एक संकल्प के साथ और ब्राउज़र में काम करता है।

इंस्टॉल:

npm install timexe

उपयोग:

var timexe = require('timexe');
var res = timexe("* * * 15 30", function(){ console.log("It's now 3:30 pm"); });

(मैं लेखक हूं)


क्या मुझे इसके लिए कुछ उदाहरण मिल सकते हैं?
एलेक्स

1
कृपया
जीथुब

2

मैं नोड-रनर का आहोर हूं । नौकरी पैदा करने के लिए इसका बहुत ही सरल तरीका है। इसके अलावा समय और अंतराल घोषित करने के लिए बहुत आसान और स्पष्ट है। उदाहरण के लिए, प्रत्येक 10min 20sec पर नौकरी निष्पादित करने के लिए,

Runnr.addIntervalJob('10:20', function(){...}, 'myjob')

रोजाना सुबह 10 बजे और दोपहर 3 बजे नौकरी करने के लिए,

Runnr.addDailyJob(['10:0:0', '15:0:0'], function(){...}, 'myjob')

यह इत्ना आसान है। आगे विस्तार के लिए: https://github.com/Saquib764/node-runnr




0

यह सभी के लिए उपयुक्त नहीं होगा, लेकिन यदि आपका एप्लिकेशन सॉकेट के माध्यम से कमांड लेने के लिए पहले से ही सेटअप है, तो आप cron उचित माध्यम से कमांड जारी करने के लिए netcat का उपयोग कर सकते हैं।

echo 'mycommand' | nc -U /tmp/myapp.sock
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.