2012-04-02 18 views
5

मेरे पास कुछ मिनीएप है जो delayed_job का उपयोग करते हैं। मेरे लोकहोस्ट पर सबकुछ ठीक काम करता है, लेकिन जब मैं अपना ऐप हेरोकू में तैनात करता हूं और उस लिंक पर क्लिक करता हूं जिसे देरी_बॉब द्वारा निष्पादित किया जाना चाहिए, तो कुछ भी नहीं होता है, "टास्क" सिर्फ delayed_job तालिका में सहेजा जाता है।हेरोकू - नौकरी कार्यकर्ता कैसे शुरू करें (देरी नौकरी)?

In this article on heroku blog लिखा है, कि delayed_job मेज से कार्य निष्पादित किया जाता है, जब चलाया जाता है इस आदेश रेक नौकरियों: काम

लेकिन मैं यह आदेश कैसे चला सकता हूं? आदेश कहाँ रखा जाना चाहिए? कोड में, या टर्मिनल कंसोल से?

उत्तर

11

आप देवदार ढेर चला रहे हैं, टर्मिनल कंसोल से निम्न चलाएँ:

तुम बड़े ढेर (बांस, एस्पेन, आदि) चला रहे हैं:

heroku rake jobs:work 

देखें: https://devcenter.heroku.com/articles/rake

delayed_jobdocumentation के अनुसार, आप भी प्रोग्राम के रूप में एक कार्यकर्ता शुरू कर सकते हैं:

#!/usr/bin/env ruby 
require File.dirname(__FILE__) + '/../config/environment' 

Delayed::Worker.new.start 
+2

हाँ, यह मुझे काम करता है। लेकिन मैं अपने ऐप से यह कार्य स्वचालित रूप से कैसे चला सकता हूं? – user984621

+0

कतार में कुछ कब होता है जब आप एक कार्यकर्ता शुरू करना चाहते हैं? क्या आपके पास ऐसा कार्यकर्ता होना चाहिए जो पूरे समय चल रहा हो और कतार से कार्य चुन रहा हो? हर दिन एक बार फिर से हेरोकू को फिर से शुरू करने के साथ समस्याग्रस्त नहीं है .. – Magne

+0

यदि आप एक ऐसा कार्यकर्ता रखना चाहते हैं जो कतार में डाल दिए गए कार्यों को स्वचालित रूप से चलाता है, तो आपको देरी_job कमांड को अपने प्रोफाइल में एक नई के रूप में रखना होगा प्रक्रिया और हेरोोकू पर अपने आवेदन के लिए कम से कम 1 कार्यकर्ता dyno जोड़ें। –

8

आपको अपने डायनोस के लिए आदेशों को स्कैस्सिफ़ाई करने के लिए एक प्रसंस्करण का उपयोग करना चाहिए। उदाहरण के लिए यदि आप अपने Procfile में कुछ इस तरह होगा:

appDir/Procfile

web:  bundle exec rails server -p $PORT 
worker: bundle exec rake jobs:work 

अपने विकास मशीन पर इस का उपयोग करने के लिए आपको फोरमैन का उपयोग करना चाहिए, यह सब डॉक्स में विस्तार से बताया है।

https://devcenter.heroku.com/articles/procfile

1

हमारे मामले में हम केवल एक महीने में एक बार एक देरी काम चला रहे हैं, तो एक कार्यकर्ता dyno लगातार चल रहा है नहीं करना चाहता था।

इसे हल करने के लिए हम नौकरी (.delayed के साथ) कतारबद्ध करें और फिर का उपयोग एक-ऑफ वर्कर में rake jobs:workoff को स्पॉन करने के लिए करें। एपीआई कॉल अपेक्षाकृत जल्दी लौटता है।

PlatformAPI.connect_oauth(ENV["YOUR_HEROKU_KEY"]).dyno.create(ENV["YOUR_HEROKU_APP_NAME"],{command: 'rake jobs:workoff'}) 
संबंधित मुद्दे