Khung Iris hỗ trợ việc dừng hoạt động một cách lịch sự. Trong các kịch bản kinh doanh thực tế, khi chúng ta muốn khởi động lại hoặc đóng ứng dụng web, việc buộc quá trình Go dừng hoạt động một cách trực tiếp có thể dễ dàng dẫn đến việc một số quy trình kinh doanh bị chấm dứt giữa chừng mà không hoàn tất, gây ra các ngoại lệ kinh doanh. Phương pháp tốt hơn là ngừng chấp nhận các yêu cầu mới, để cho các yêu cầu đang diễn ra hoàn thành việc xử lý, và sau đó thoát quá trình Go.

Bạn có thể sử dụng một số phương pháp để thực hiện việc dừng hoạt động hoặc khởi động lại một cách lịch sự. Bạn cũng có thể sử dụng các gói bên thứ ba được xây dựng đặc biệt cho mục đích này, hoặc bạn có thể sử dụng phương thức app.Shutdown(context.Context).

Đăng ký sự kiện CTRL/CMD+C bằng cách sử dụng iris.RegisterOnInterrupt:

idleConnsClosed := make(chan struct{})
iris.RegisterOnInterrupt(func() {
    timeout := 10 * time.Second
    ctx, cancel := stdContext.WithTimeout(stdContext.Background(), timeout)
    defer cancel()
    // đóng tất cả các máy chủ.
    app.Shutdown(ctx)
    close(idleConnsClosed)
})

// [...]
app.Listen(":8080", iris.WithoutInterruptHandler, iris.WithoutServerError(iris.ErrServerClosed))
<-idleConnsClosed