Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

जब भी रत्न के साथ रूबी में क्रॉन जॉब्स को कैसे शेड्यूल करें

क्रोन क्या है?

क्रोन एक जॉब शेड्यूलिंग सिस्टम है जो Linux और MacOS ऑपरेटिंग सिस्टम में उपलब्ध है।

इसका उपयोग किसी भी प्रोग्राम को चलाने . के लिए किया जा सकता है किसी भी समय।

इसमें रूबी कोड शामिल है!

यदि कोई विशिष्ट आवर्ती कार्य . है कि आप हर दिन, हर हफ्ते या हर घंटे स्वचालित रूप से चलाना चाहते हैं, तो क्रॉन वह हो सकता है जिसे आप ढूंढ रहे हैं।

कार्यों के उदाहरण में शामिल हैं :

  • साप्ताहिक डेटाबेस बैकअप चलाना
  • वेबसाइट गतिविधि की दैनिक रिपोर्ट तैयार करना
  • अनुस्मारक ईमेल भेजना

आइए जानें कि आप क्रोन को आपके लिए कैसे काम कर सकते हैं!

क्रोन की मूल बातें

प्रत्येक उपयोगकर्ता के पास एक क्रॉन फ़ाइल हो सकती है जहां आप उन कार्यों को परिभाषित करते हैं जिन्हें आप चलाना चाहते हैं।

आप इस फ़ाइल को crontab -e . के साथ संपादित कर सकते हैं आदेश।

या निर्धारित कार्यों को crontab -l . के साथ सूचीबद्ध करें ।

उदाहरण क्रॉन जॉब :

0 0 * * * /opt/rubies/ruby-2.5.1/bin/rake db:backup

सिंटैक्स थोड़ा मुश्किल हो सकता है और आप इन फ़ाइलों को हर समय हाथ से संपादित नहीं करना चाहेंगे।

क्या हमारे लिए चीजों को आसान बनाने के लिए कोई रत्न हैं?

हाँ!

जब भी रत्न का उपयोग कैसे करें

क्योंकि क्रोन सिंटैक्स को याद रखना मुश्किल हो सकता है, हम whenever . जैसे रत्न का उपयोग कर सकते हैं ।

यह रत्न आपको रूबी में क्रॉन जॉब्स को परिभाषित करने में मदद करता है

पहले रत्न स्थापित करें।

फिर, कॉन्फ़िगरेशन फ़ाइल बनाएं :

wheneverize .
# [add] config/schedule.rb

इसे खोलो।

आपको कुछ टिप्पणी-आउट उदाहरण दिखाई देंगे, यदि आप चाहें तो उन्हें हटा दें।

मान लें कि हम एक बैकअप कार्य चाहते हैं जो हर घंटे चलता है।

इसे “config/schedule.rb” फ़ाइल के अंदर लिखें :

every 1.hour do
  rake "db:backup"
end

विकल्पों में शामिल हैं :

  • रेक (अपने वर्तमान प्रोजेक्ट पर परिभाषित एक रेक कार्य प्रारंभ करें, ध्यान दें कि db:backup डिफ़ॉल्ट रूप से परिभाषित नहीं है, लेकिन आप कोशिश कर सकते हैं db:version )
  • धावक (रूबी वर्ग + विधि, जैसे Archive.backup_now )
  • कमांड (सिस्टम कमांड)

अब :

whenever --update-crontab चलाएं, चलाएं क्रॉन प्रविष्टियां उत्पन्न करने के लिए आदेश।

आपको अपनी नई प्रविष्टि crontab -l . के साथ देखने में सक्षम होना चाहिए ।

मुझे यही मिला है :

0 * * * * /bin/bash -l -c 'cd /home/jesus/testing && RAILS_ENV=production bundle exec rake db:backup --silent'

ध्यान दें कि कार्य production में चलेगा मोड।

इसे बदलना चाहते हैं?

आप इस सेटिंग का उपयोग कर सकते हैं :

set :environment, "development"

यह आपके schedule.rb . में जाता है फ़ाइल, सबसे ऊपर।

आप इस आदेश का उपयोग भी कर सकते हैं :

whenever --update-crontab --set environment=development

जब आप इस कमांड को चलाते हैं तो यह "विकास" के साथ सभी कार्यों को पर्यावरण के रूप में बनाता है।

अधिक जब भी उदाहरण

यह उदाहरण दिखाता है कि आप और अधिक विशिष्ट कैसे हो सकते हैं।

साप्ताहिक कार्य :

every :monday, at: "6:00 PM" do
  runner "Mail.send_weekly_newsletter"
end
करें

यह उदाहरण दिखाता है कि एक ही कार्य को दिन में कई बार कैसे चलाया जाता है।

कार्य को दिन में दो बार चलाएं :

every :day, at: ["12:00 AM", "12:00 PM"] do
  command "rm tmp/testing.txt"
end
करें

जब भी जेम लॉगिंग और समस्या निवारण

एक बार जब आप अपनी crontab फ़ाइल में कार्य कर लेते हैं (crontab -l . के साथ जांचें) ) आप जाने के लिए तैयार हैं।

अगला:

आपको कैसे पता चलेगा कि शेड्यूल किए गए कार्य सही तरीके से काम कर रहे हैं?

आप लॉगिंग सेट कर सकते हैं और आउटपुट पढ़ सकते हैं।

इसे अपने schedule.rb . के शीर्ष पर जोड़कर लॉगिंग सक्षम करें फ़ाइल।

कॉन्फ़िगरेशन :

set :output, "log/cron.log"

whenever --update-crontab चलाना याद रखें हर बार परिवर्तन करने पर आदेश दें!

लॉग फ़ाइल अभी भी खाली है?

कुछ घटित होते देखने के लिए आपको निर्धारित समय की प्रतीक्षा करनी होगी।

बीटीडब्ल्यू, अगर आपको लॉग में यह त्रुटि दिखाई देती है :

/bin/bash: bundle: command not found

इसका मतलब है कि क्रॉन रूबी का वही संस्करण नहीं चला रहा है जो आप कर रहे हैं।

यदि आप रूबी संस्करण प्रबंधक का उपयोग कर रहे हैं :

इसे .bash_profile . से लोड करना सुनिश्चित करें फ़ाइल, के बजाय .bashrc , ताकि आपके क्रॉन कार्य इसका उपयोग कर सकें।

जब भी विकल्प

जब भी एक सुव्यवस्थित रत्न होता है और यह बहुत अच्छा काम करता है।

लेकिन विकल्प क्या हैं?

यहां एक सूची है :

  • Heroku शेड्यूलर, यह Heroku उपयोगकर्ताओं के लिए एक निःशुल्क जॉब शेड्यूलिंग ऐड-ऑन है। क्रोन की तरह लचीला नहीं है, लेकिन यह काम पूरा करता है
  • रूफस शेड्यूलर, एक रूबी रत्न जो क्रॉन को इन-मेमोरी शेड्यूलर से बदल देता है
  • साइडक्लोक और साइडकीक-क्रॉन, दोनों साइडकीक ऐड-ऑन हैं जो साइडकीक में पुनरावर्ती कार्यों को जोड़ते हैं

ध्यान दें कि दोनों साइडकीक एडॉन्स शेड्यूलिंग के लिए वास्तविक क्रॉन सिंटैक्स चाहते हैं, इसलिए यह सिंटैक्स जितना अच्छा नहीं होगा।

अच्छी बात यह है कि वे Sidekiq वेब UI के साथ एकीकृत होते हैं।

सारांश

आपने रूबी में जब भी रत्न का उपयोग करके क्रॉन जॉब शेड्यूल करना सीख लिया है!

कृपया इस लेख को शेयर करें ताकि अधिक से अधिक लोग इसका लाभ उठा सकें।

पढ़ने के लिए धन्यवाद।


  1. रूबी ग्रेप विधि का उपयोग कैसे करें (उदाहरण के साथ)

    आइए बात करते हैं grep . के बारे में विधि। यह विधि आपके लिए क्या कर सकती है? आप ग्रेप का उपयोग एरेज़ और रेंज जैसी असंख्य वस्तुओं को फ़िल्टर करने के लिए कर सकते हैं। “लेकिन चुनें पहले से ही ऐसा करता है!” हां, लेकिन grep एक अलग तरीके से काम करता है और यह अलग परिणाम देता है। आइए कुछ उदाहरण देखें।

  1. रूबी मानचित्र विधि का उपयोग कैसे करें (उदाहरण के साथ)

    मैप एक रूबी विधि है जिसका उपयोग आप ऐरे, हैश और रेंज के साथ कर सकते हैं। मानचित्र का मुख्य उपयोग डेटा को ट्रांसफ़ॉर्म करना है। उदाहरण के लिए : स्ट्रिंग्स की एक सरणी को देखते हुए, आप प्रत्येक स्ट्रिंग पर जा सकते हैं और प्रत्येक वर्ण को अपरकेस बना सकते हैं। या यदि आपके पास User . की सूची है ऑब्जेक्

  1. रूबी के साथ एक पार्सर कैसे बनाएं

    पार्सिंग स्ट्रिंग्स के एक गुच्छा को समझने और उन्हें किसी ऐसी चीज़ में बदलने की कला है जिसे हम समझ सकते हैं। आप रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं, लेकिन वे हमेशा कार्य के लिए उपयुक्त नहीं होते हैं। उदाहरण के लिए, यह सामान्य ज्ञान है कि नियमित अभिव्यक्तियों के साथ HTML को पार्स करना शायद एक अच्छ