2014-05-19 11 views
5

जब पढ़ने Sidekiq Wiki मैं निम्नलिखित उदाहरण देखें:perfrom_async और साइडकीक में देरी के बीच क्या अंतर है?

से Getting started:

संदेश भेजें एसिंक्रोनस रूप से संसाधित करने के लिए:

HardWorker.perform_async('bob', 5) 

तुम भी देरी विधि को फोन करके संदेश भेज सकते हैं कक्षा विधि पर:

User.delay.do_some_stuff(current_user.id, 20) 

इसके अलावा, Delayed extensions से:

देरी का प्रयोग करें अपने ईमेल एसिंक्रोनस रूप से वितरित करने के लिए। भविष्य में किसी बिंदु पर ईमेल वितरित करने के लिए delay_for (अंतराल) या delay_until (समय) का उपयोग करें।

UserMailer.delay.welcome_email (@ user.id) UserMailer.delay_for (5.days) .find_more_friends_email (@ user.id) UserMailer.delay_until (5.days.from_now) .find_more_friends_email (@ user.id)

तो perfrom_async और delay के बीच वास्तव में क्या अंतर है? मैं किस परिस्थिति में एक दूसरे को पसंद करूंगा?

उत्तर

3

perform_async साइडकीक का मूल एपीआई है। विलंब डेलएड जॉब के साथ एक संगतता API है। जब संभव हो perform_async का प्रयोग करें।

+0

क्या आपके बीच मेल ऑब्जेक्ट पर स्वचालित रूप से '.deliver'' कहलाता है और कौन सा नहीं है? – Andrei

+1

आपके लिए एक एक्शनमेलर कॉल पर देरी। perform_async एक सामान्य पृष्ठभूमि कॉल है, आपको प्रदर्शन विधि में डिलीवरी कॉल करने की आवश्यकता होगी। –

+1

"जब संभव हो तो perform_async का उपयोग करें" @ माइकपेरहम तो क्यों प्रलेखन (https://github.com/mperham/sidekiq/wiki/Delayed-extensions) इंगित करता है कि ActiveRecord और ActionMailer के लिए देरी की अनुशंसा की जाती है? – ChrisH

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