आईरिस फ्रेमवर्क ग्रेसफुल शटडाउन का समर्थन करता है। वास्तविक व्यवसायिक परिदृश्यों में, जब हम वेब एप्लिकेशन को रिस्टार्ट या बंद करना चाहते हैं, तो गो प्रक्रिया को सीधे बंद करने से आसानी से व्यवसायिक प्रक्रियाओं को अधूरे होने का कारण बन सकता है, जिससे व्यवसायिक अपवाद पैदा हो सकता है। बेहतर दृष्टिकोण यह है कि नए रिक्वेस्ट्स को स्वीकार करना बंद करें, चल रहे रिक्वेस्ट्स को प्रोसेस करने दें, और फिर गो प्रक्रिया को बंद करें।
आप ग्रेसफुल शटडाउन या रिस्टार्ट करने के लिए कई तरीकों का उपयोग कर सकते हैं। आप इस उद्देश्य के लिए विशेष रूप से तैयार पैकेजों का उपयोग कर सकते हैं, या आप app.Shutdown(context.Context) मेथड का भी उपयोग कर सकते हैं।
iris.RegisterOnInterrupt का उपयोग करके CTRL/CMD+C इवेंट को रजिस्टर करें:
idleConnsClosed := make(chan struct{})
iris.RegisterOnInterrupt(func() {
timeout := 10 * time.Second
ctx, cancel := stdContext.WithTimeout(stdContext.Background(), timeout)
defer cancel()
// सभी होस्ट को बंद करें
app.Shutdown(ctx)
close(idleConnsClosed)
})
// [...]
app.Listen(":8080", iris.WithoutInterruptHandler, iris.WithoutServerError(iris.ErrServerClosed))
<-idleConnsClosed