โครงสร้าง Iris รองรับการปิดระบบอย่างมีความสง่างาม (graceful shutdown) ในสถานการณ์ทางธุรกิจจริง ๆ เมื่อเราต้องการที่จะรีสตาร์ทหรือปิดแอปพลิเคชันเว็บ การบังคับกระบวนการ Go ให้ปิดอย่างตรงไปตรงมาอาจจะทำให้บางกระบวนการทางธุรกิจถูกสิ้นสุดลงบริบทหรือไม่สมบูรณ์ ทำใให้เกิดข้อยกเว้นทางธุรกิจได้ วิธีที่ดีกว่าคือให้หยุดรับคำขอใหม่ ให้คำขอที่กำลังดำเนินการเสร็จสิ้นการประมวลผล และจึงออกจากระบบ Go

คุณสามารถใช้หลายวิธีในการทำการปิดระบบหรือรีสตาร์ท คุณยังสามารถใช้แพ็คเกจภายนอกที่สร้างขึ้นมาเพื่อวัตถุประสงค์เฉพาะนั้น หรือคุณสามารถใช้เมธอด app.Shutdown(context.Context) ได้เช่นกัน

ลงทะเบียนเหตุการณ์ CTRL/CMD+C โดยใช้ iris.RegisterOnInterrupt:

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