আমার একটি নোডেজ শিডিউল দরকার যা বিভিন্ন বিরতিতে [বন্ধ] কাজ করার অনুমতি দেয়


127

আমি একটি নোড কাজের সময়সূচী খুঁজছি যা আমাকে বিভিন্ন বিরতিতে বেশ কয়েকটি কাজ শিডিউল করার অনুমতি দেবে। এই ক্ষেত্রে,

  • প্রতি 30 সেকেন্ডে একটি ফাংশন কল করুন
  • প্রতি 60 সেকেন্ডে বি ফাংশন কল করুন
  • কল ফাংশন সি প্রতি 7 দিন অন্তর

আমি প্রক্রিয়াটি শুরু করতে এবং থামাতে সক্ষম হতে চাই।

এখনও অবধি আমি তাকিয়েছি:

  • পরে - বাক্য গঠন আমাকে বিভ্রান্ত করে, স্পষ্টতই আপনি এক মাসেরও বেশি সময়সূচির কাজও করতে পারবেন না

  • এজেন্ডা - সর্বাধিক প্রতিশ্রুতিবদ্ধ মনে হয়, তবে আমি ডাটাবেস কার্যকারিতা সম্পর্কে বিভ্রান্ত

  • টাইমপ্ল্যান - খুব সাধারণ, শুরু এবং থামাতে পারে না

আমি পরবর্তীগুলির বাক্য গঠনটি খুঁজে পাই।


1
কীভাবে কেবলমাত্র একটি সেটআইন্টারভাল ব্যবহার করা হচ্ছে, আপনি ঠিক ঠিক কেমন আছেন?
অ্যাডিনিও

হ্যাঁ সেটইন্টারওয়াল ব্যবহার করবেন না কেন?
ইয়ালামবার

আমি জানি যে এই ফণার নীচে কিছু অভ্যন্তরীণ ব্যবহার রয়েছে, তবে আমি কিছুটা উচ্চতর স্তরের জন্য সন্ধান করছিলাম ... আমি পাইথনে শিডিউল ( github.com/dbader/schedule ) ব্যবহার করতে ব্যবহার করেছি এবং আমি একটি নোড খুঁজছিলাম এতে অ্যানালগ
ব্যবহারকারী 379468

TaskTimer চেষ্টা করে দেখুন - github.com/onury/tasktimer
হল Onur ইলদিরিম

আমি এজেন্ডাটি ব্যবহার করেছি, খারাপ নয়
আলেকজান্ডার গোলোভাত্তি

উত্তর:


223

আমি সুপারিশ করব node-cron। এটি ক্রোন নিদর্শনগুলি ব্যবহার করে কাজ চালাতে সহায়তা করে

'* * * * * *' - runs every second
'*/5 * * * * *' - runs every 5 seconds
'10,20,30 * * * * *' - run at 10th, 20th and 30th second of every minute
'0 * * * * *' - runs every minute
'0 0 * * * *' - runs every hour (at 0 minutes and 0 seconds)

আরও জটিল সময়সূচী যেমন

'00 30 11 * * 1-5' - Runs every weekday (Monday through Friday) at 11:30:00 AM. It does not run on Saturday or Sunday.

নমুনা কোড : প্রতি 10 মিনিটে কাজ চলছে:

var cron = require('cron');
var cronJob = cron.job("0 */10 * * * *", function(){
    // perform operation e.g. GET request http.get() etc.
    console.info('cron job completed');
}); 
cronJob.start();

আপনি নোড-ক্রোন উইকিতে আরও উদাহরণ পেতে পারেন

ক্রোন কনফিগারেশনে আরও ক্রোন উইকিতে পাওয়া যাবে

আমি অনেক প্রকল্পে সেই লাইব্রেরিটি ব্যবহার করেছি এবং এটি কাজ করে। আমি আশা করি এটি সাহায্য করবে


ঠিক আছে, আমি ক্রোন সিনট্যাক্স দ্বারা ভয় পেয়েছিলাম, তবে এটি সেরা পদ্ধতির মতো বলে মনে হচ্ছে
ইউজার 3799468

1
অপেক্ষা করুন আমি শীঘ্রই কথা বলেছি, আমি কীভাবে ক্রোন লিখব যা প্রতি 5 সেকেন্ড বা প্রতি 30 সেকেন্ডে চলে?
ব্যবহারকারী 379468

3
ক্রোন সিনট্যাক্সটি ভীতিজনক মনে হতে পারে । অন্যদিকে এটি দীর্ঘ সময়ের জন্য বিদ্যমান এবং এটি ব্যাপকভাবে জানে তাই এসও
টম

1
স্রেফ আমার প্রতিক্রিয়াটি আপডেট করেছি যাতে এটি হবে - '* / 5 * * * * *' - প্রতি 5 সেকেন্ড বা '* / 30 * * * *' 'সেকেন্ড
টম

1
২০২০ সাল পর্যন্ত এবং নোড-ক্রোন অফিসিয়াল এনএমপি পৃষ্ঠা অনুসারে, এই প্যাকেজটির ব্যবহার হ্রাস পেয়েছে। এই প্যাকেজটি সর্বশেষ 2 বছর আগে এনএমপি প্রকাশিত হয়েছিল, তাই নিয়মিত আপডেট হয় না। এখন, বরং অন্য একটি প্যাকেজ নোড-ক্রোন যার স্পষ্টতই একই নাম রয়েছে তবে বিভিন্ন ইউআরএল দ্বারা অগ্রাধিকার দেওয়া উচিত।
n0noob

36

আমি নোড-ক্রোন এবং এজেন্ডা ব্যবহার করেছি ।

নোড-ক্রোন একটি খুব সাধারণ লাইব্রেরি, যা ক্রোনটবের মতো এপিআই বোঝার জন্য খুব প্রাথমিক এবং সহজলভ্য। এটির কোনও কনফিগার দরকার নেই এবং কেবল কাজ করে।

var cronJob = require('cron').CronJob;
var myJob = new cronJob('00 30 11 * * 1-5', function(){...});
myJob.start();

এজেন্ডা খুব শক্তিশালী এবং আরও জটিল পরিষেবার জন্য ফিট। আইএফটিটিটি নিয়ে ভাবুন , আপনাকে লক্ষ লক্ষ কাজ চালাতে হবে। এজেন্ডা সেরা পছন্দ হবে।

দ্রষ্টব্য: এজেন্ডাটি ব্যবহার করার জন্য আপনার মোংডব দরকার

var Agenda = require("Agenda");
var agenda = new Agenda({db: { address: 'localhost:27017/agenda-example'}});
agenda.every('*/3 * * * *', 'delete old users');
agenda.start();

1
কোনও কারণে, যখন আমি এজেন্ডাটি ব্যবহার করার চেষ্টা করি তখন আমি একটি ত্রুটি পেয়েছি রেফারেন্সএরর: এজেন্ডা সংজ্ঞায়িত হয় না। আমি এনপিএম দিয়ে প্যাকেজটি ইনস্টল করেছি, এজেন্ডা ইনস্ট্যান্ট করার আগে আমাকে কি কিছু করতে হবে?
ব্যবহারকারী 379468

2
আমি মনে করি আপনার এটি আপনার স্থানীয় ভেরিয়েবলের প্রয়োজন। var এজেন্ডা = প্রয়োজনীয় ("এজেন্ডা");
রায়ান উ

1
আমি সম্প্রতি এজেন্ডা, প্রকল্পের সেটআপ এবং প্রকল্পের কাঠামো goo.gl/5sCNBM
রবিন ওয়ারিয়ুচ

1
নোট করুন যে এজেন্ডাটি ব্যবহার করার জন্য আপনার মোংডব চালানো দরকার
মার্ক রবসন

1
নোড-ক্রোন বা এজেন্ডা কি আলাদা নোড সিস্টেম প্রক্রিয়া চালায়? আপনি কি সেগুলি একাধিক নোড প্রক্রিয়া সেটআপে ব্যবহার করতে পারেন?
প্রসাদ সিলভা

14

আমি মনে করি সেরা র‌্যাঙ্কিং

1.node সময়সূচিবদ্ধ

2.later

3.crontab

এবং নোড-সময়সূচীর নমুনা নীচে রয়েছে:

var schedule = require("node-schedule");
var rule = new schedule.RecurrenceRule();
//rule.minute = 40;
rule.second = 10;
var jj = schedule.scheduleJob(rule, function(){
    console.log("execute jj");
});

নোড মডিউলগুলি থেকে আপনি উত্তরটি পেতে পারেন ।


1
সিনট্যাক্সটি ভালোবাসুন, ভাগ করে নেওয়ার জন্য ধন্যবাদ
ওভারড্রাইভার

10

আমি একটি নোড মডিউল লিখেছি যা একটি ঘোষণাযুক্ত ইন্টারফেস সরবরাহের মুহুর্তের সময়কাল ব্যবহার করে সেটইন্টারভাল জুড়ে মোড়ক সরবরাহ করে:

এনপিএম প্রতি মুহূর্তে ইনস্টল করুন

var every = require('every-moment');

var timer = every(5, 'seconds', function() {
    console.log(this.duration);
});

every(2, 'weeks', function() {
    console.log(this.duration);
    timer.stop();
    this.set(1, 'week');
    this.start();
});

https://www.npmjs.com/package/every-moment

https://github.com/raygerrard/every-moment



এটি অনেক পাঠযোগ্য। আমি একটি প্যাকেজ লিখেছি যা node-cron@ টম উত্তর হিসাবে ব্যবহার করে । এবং আপনার মত একটি দুর্দান্ত সিনট্যাক্স আছে। reel().call(() => console.log('hello !!')).everyMinute().run() github.com/shakee93/node-reel
shakee93

@ কেককো 12 এনপিএম এ আছে: npmjs.com/package/every-moment
আলী হেসারি


1

আমি এটি করার জন্য একটি ছোট মডিউল লিখেছি, যাকে টাইমেক্স বলা হয় :

  • এটির সহজ, ছোট নির্ভরযোগ্য কোড এবং এর কোনও নির্ভরতা নেই
  • রেজোলিউশনটি মিলি সেকেন্ডে রয়েছে এবং সময়ের সাথে সাথে উচ্চ নির্ভুলতা রয়েছে
  • ক্রোন পছন্দ করলেও উপযুক্ত নয় (বিপরীত ক্রম এবং অন্যান্য উন্নতি)
  • আমি ব্রাউজারেও কাজ করি

ইনস্টল করুন:

npm install timexe

ব্যবহার করুন:

var timexe = require('timexe');
//Every 30 sec
var res1=timexe(”* * * * * /30”, function() console.log(“Its time again”)});

//Every minute
var res2=timexe(”* * * * *”,function() console.log(“a minute has passed”)});

//Every 7 days
var res3=timexe(”* y/7”,function() console.log(“its the 7th day”)});

//Every Wednesdays 
var res3=timexe(”* * w3”,function() console.log(“its Wednesdays”)});

// Stop "every 30 sec. timer"
timexe.remove(res1.id);

আপনি টাইমেক্স জব অ্যারেতে সরাসরি এন্ট্রি সরিয়ে / পুনরায় যুক্ত করে কার্যকারিতা শুরু / থামাতে পারেন। তবে এটি কোনও এক্সপ্রেস ফাংশন নয়।


4
আপনি লেখক যে উল্লেখ করা উচিত।
20

13
@ a20 "ঠিক এটি করার জন্য একটি ছোট মডিউল লিখেছেন।" এর অর্থ আপনি পড়ার সময় এড়িয়ে
গেছেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.