after_filter
चलाया जाता है प्रतिपादन के बाद remote_action विधि कॉल करने की जरूरत है एचटीएमएल में परिवर्तित कर दिया है, लेकिन पहले कि एचटीएमएल ग्राहक की प्रतिक्रिया के रूप में भेजा जाता है। इसलिए, यदि आप दूरस्थ http अनुरोध करने की तरह कुछ धीमा कर रहे हैं, तो यह आपकी प्रतिक्रिया को धीमा कर देगा, क्योंकि इसे उस दूरस्थ अनुरोध को समाप्त करने की प्रतीक्षा करनी होगी: दूसरे शब्दों में, दूरस्थ अनुरोध आपकी प्रतिक्रिया को अवरुद्ध कर देगा।
अवरुद्ध से बचने के लिए, आप एक अलग धागा बंद कांटा सकता है: इस का उपयोग करते हुए
https://github.com/tra/spawnling
पर एक नजर है, तो आप सिर्फ
def remote_action
Spawnling.new do
# There is remote http request
end
end
रिमोट होगा कॉल करने के लिए अपने कोड बदल जाएगा प्रतिक्रिया वापस भेजने से पहले अभी भी ट्रिगर किया जा सकता है, लेकिन क्योंकि इसे एक नए धागे में फंसाया गया है, प्रतिक्रिया रिमोट अनुरोध वापस आने के लिए इंतजार नहीं करेगी, यह अभी सीधे हो जाएगी।
आप https://github.com/collectiveidea/delayed_job पर भी देख सकते हैं, जो डेटाबेस तालिका में नौकरियां डालता है, जहां एक अलग प्रक्रिया उन्हें बाहर खींचती है और उन्हें निष्पादित करती है।
स्रोत
2015-10-20 15:51:10
सुनिश्चित नहीं हैं कि क्यों आपको ऐसा करने की जरूरत है? क्या आप अधिक पृष्ठभूमि दे सकते हैं कि इसे क्यों बुलाया जाना चाहिए, न कि दौरान? आप जेएस के माध्यम से एक एपीआई कॉल कर सकते हैं जो क्लाइंट साइड पर पेज के बाद इस क्रिया को ट्रिगर करता है। – penner
रिमोट सर्वर पर अनुरोध करने में कुछ समय लगता है, और मुझे पृष्ठभूमि में इस क्रिया को कॉल करने की आवश्यकता है, उदाहरण के लिए: ट्विटर एपीआई –