2013-02-22 9 views
5

मैं इसके लिए नया हूं और इस बारे में थोड़ा उलझन में हूं कि देरी नौकरी कैसे काम करती है?देरी नौकरी रेल पर रूबी में कैसे काम करती है?

मैं इसे एक मेज बनाता है और तालिका में नौकरियों डालता जानते हैं और फिर मैं

rake jobs:work 

पृष्ठभूमि प्रक्रिया शुरू करने के लिए चलाने की जरूरत है। अब मेरे सवाल

  1. करता डीजे स्क्रिप्ट की जाँच करता है तालिका हर मिनट है और जब समय job_at समय से मेल खाता है, यह है कि काम चलाता है?

  2. क्रॉन (जब भी मणि) से अलग है तो स्क्रिप्ट सिर्फ हर मिनट तालिका की जांच कर रही है?

धन्यवाद

+0

!/मुझे लगता है कि हाँ 2/यह प्राथमिकताओं को संभालती है, नीति आदि ... – apneadiving

उत्तर

6
  1. करता डीजे स्क्रिप्ट हर मिनट तालिका जाँच करता है और जब समय job_at समय से मेल खाता है, यह है कि काम चलाता है?

जब आप चलाने rake jobs:work DelayedJob delayed_jobs तालिका मतदान होगा, रोजगार job_at स्तंभ मान मिलान करता है, तो यह निर्धारित किया गया है प्रदर्शन। इस भाग के बारे में आप सही हैं।

  1. कैसे यह क्रॉन से अलग है (जब भी मणि) हर मिनट अगर स्क्रिप्ट सिर्फ तालिका जाँच कर रहा है?

whenever एक रत्न आप एक crontab कॉन्फ़िगर मदद करता है। इसमें आपके सर्वर पर आवधिक आधार पर प्रदर्शन करने के लिए सीधे कुछ भी नहीं है।

आप हर मिनट कतार में जो भी कार्य मौजूद हैं, चलाने के लिए एक क्रॉन सेटअप कर सकते हैं, लेकिन delayed_job डिमन चलने से कई लाभ होते हैं।

  • यहां तक ​​कि अगर क्रॉन हर मिनट दौड़ा, delayed_job के डेमॉन देख सकते हैं और किसी भी कार्य होगा पंक्तिबद्ध कि क्रॉन के बीच 1 मिनट की खिड़की के भीतर चलाता
  • हर बार क्रॉन चल पाएंगे, यह एक नई रेल पुनर्निर्माण करेंगे पर्यावरण जिसमें नौकरियां करने के लिए। यह समय और संसाधनों की बर्बादी है जब डेमॉन बस एक नई कतारबद्ध नौकरी करने के लिए तुरंत तैयार हो सकता है।

आप, delayed_job, ऊपर स्पिन प्रदर्शन जो कुछ नौकरियों यह या जो के लिए तैयार हैं जाएगा हर मिनट आप अपने crontab

* * * * * RAILS_ENV=production script/delayed_job start --exit-on-complete 

हर मिनट के लिए कुछ इस तरह जोड़ सकते हैं एक क्रॉन के माध्यम से delayed_job कॉन्फ़िगर करने के लिए चाहते हैं इसे पहले विफल रन से पुनः प्रयास करना होगा, और फिर छोड़ दें। हालांकि मैं इसकी अनुशंसा नहीं करता हूं। एक डेमॉन के रूप में देरी_बॉज को सेट करना सही तरीका है।

+0

कमाल उत्तर Deefour पुन: प्रयास, धन्यवाद – iCyborg

+0

आप अपने प्रश्न को ख़त्म करने के लिए एक जवाब को स्वीकार करना चाहिए। – deefour

4

करता डीजे स्क्रिप्ट तालिका हर मिनट की जाँच करता है और जब समय job_at समय से मेल खाता है, यह है कि काम चलाता है?

हाँ। यह हर 5 सेकंड में डेटाबेस की जांच करता है।

स्क्रिप्ट (जब भी मणि) से अलग है, तो स्क्रिप्ट सिर्फ प्रत्येक मिनट तालिका की जांच कर रही है?

पृष्ठभूमि नौकरियों के संदर्भ में, वे अलग नहीं हैं। उनका मुख्य अंतर यह है कि वे आम तौर पर नौकरियों को कैसे चलाते हैं।

  DJ     |   Crontab 
uses additional database  | you should either set up a rake task 
table but that's it. easier | or a runner which can be called on the 
to code compared to crontab | crontab 
------------------------------|------------------------------------------ 
requires you to run a worker | requires you to setup your cron which 
that will poll the database | you can easily do using the whenever gem 
------------------------------|------------------------------------------ 
since this uses a table, it | you have to setup some sort of logging so 
is easier to debug errors | that you have an idea what caused the error 
when they happen    | 
------------------------------|------------------------------------------ 
the worker should always be | as long as your crontab is set up properly, 
running to perform the job | you should have no issues 
------------------------------|------------------------------------------ 
harder to setup recurring | easy to setup recurring tasks 
tasks      | 
------------------------------|------------------------------------------ 
+0

कमाल का जवाब jvnill, धन्यवाद – iCyborg

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