मैंने अभी तक तैनात नहीं किया है, लेकिन मुझे यकीन नहीं है कि यह कैसे करें।उचित रूप से रोकना, प्रतीक्षा करना और रीडिंग करना node.js heroku प्रक्रिया
मेरे पास एक ऐप है जो कई पृष्ठभूमि प्रक्रियाओं का उपयोग करता है। यही है, प्रतिक्रिया के बाद भी, पृष्ठभूमि में निष्पादित प्रतिक्रिया के साथ जुड़े फ़ंक्शंस अभी भी हैं। इस प्रकार, मैं ऐसा कुछ करना चाहता हूं:
var server = http.createServer(app).listen(80)
process.on('SIGINT', function() {
server.close()
setTimeout(function() {
process.exit()
}, 30000) // Wait 30 seconds before exiting
})
मुझे यकीन नहीं है कि यह सही है या नहीं। अधिक धारणाएं:
- ये पृष्ठभूमि प्रक्रियाएं महत्वपूर्ण हैं। हालांकि, वे शायद 1-2 सेकंड ले लेंगे, 30 सेकंड नहीं। फिर भी, मैं केवल सुरक्षा के लिए 30 सेकंड देरी रखना चाहता हूं।
- यह (हमेशा के लिए साथ, कहते हैं) दोनों प्रक्रिया को पुन: प्रारंभ करने के लिए काम करना चाहिए और इस प्रक्रिया को रोकने
- क्या संकेत Heroku (या किसी अन्य प्रक्रिया)
process
के माध्यम से Node.js को भेजती है? क्या मुझे उन्हें किसी भी तरह से संभालना होगा? - क्या मैं
uncaughtException
को किसी भी अलग तरीके से संभालूं?
धन्यवाद
1. ये नौकरियां डीबी कार्य हैं इसलिए मुझे श्रमिकों का उपयोग करने में कोई बिंदु नहीं दिख रहा है। जब तक मैं नौकरी कतार में हूं, यह पहले से ही किया जा सकता है। 2. मैं एक और डेटाबेस जोड़ने के लिए नहीं जा रहा हूँ। 3. मुझे कई ढेर नहीं चाहिए। –
इसलिए जॉब्स कतार के समान कुछ लागू करें, इसलिए जब एक डिनो पुन: प्रारंभ करता है तो यह लंबित नौकरियों को संसाधित करता है और आप पुनरारंभ करने के कारण कुछ भी नहीं खोते हैं। आईएमएचओ इसकी एक और अधिक मजबूत रणनीति है, फिर एक टाइमआउट स्थापित करने और उम्मीद है कि कुछ भी नहीं मारा जाएगा। (यदि प्रक्रिया को मारने के बिना मशीन पूरी तरह से मर जाती है तो भी आपको कवर किया जाएगा) –
उत्तर बहुत आसान है - 'सिगिनट' या 'सिगिल' के बजाय 'सिगरम' घटना को सुनें: https://devcenter.heroku.com/लेख/dynos # सुंदर-बंद-साथ-sigterm –