>  기사  >  백엔드 개발  >  Golang 파일 업로드에서 컨텍스트 시간 초과를 사용하는 방법은 무엇입니까?

Golang 파일 업로드에서 컨텍스트 시간 초과를 사용하는 방법은 무엇입니까?

WBOY
WBOY원래의
2024-06-01 19:20:01689검색

Go에서 파일 업로드에 컨텍스트 시간 초과를 사용하면 클라이언트가 업로드를 완료할 때까지 서버가 오랜 시간 동안 기다리는 것을 방지할 수 있습니다. 방법은 다음과 같습니다. 1) 새 컨텍스트 객체를 생성하고 시간 초과 값을 설정합니다. 2) 컨텍스트 객체를 파일 작업에 전달합니다. 3) ctx.Err()을 사용하여 시간 초과로 인해 작업이 취소되었는지 확인합니다. 실제 예: 1) 업로드 시간 초과 설정, 2) 양식 분석, 3) 파일 처리, 4) 시간 초과로 인해 작업이 취소되었는지 확인합니다. 이 예에서는 업로드가 10초 이내에 완료되거나 시간 초과 오류가 반환되는지 확인합니다.

Golang 文件上传中如何使用 context 超时?

Go에서 파일을 업로드할 때 컨텍스트 시간 초과 사용

Go에서 컨텍스트 패키지를 사용하여 시간 초과를 설정하는 것은 파일 업로드 시나리오를 처리하는 데 중요합니다. 이를 통해 업로드 작업 시간을 제한하고 클라이언트가 업로드를 완료할 때까지 서버가 오랫동안 기다리지 않도록 할 수 있습니다.

사용 방법

다음 단계를 사용하여 파일 업로드에서 컨텍스트 시간 초과를 사용할 수 있습니다.

  1. 새 컨텍스트 개체를 생성하고 적절한 시간 초과 값을 설정합니다.
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
  1. 컨텍스트 개체를 하나에 전달합니다. http.Request와 같은 파일 업로드 작업을 처리합니다. http.Request
// 根据 ctx 处理上传的文件
if err := handler.HandleUpload(req.Context(), req); err != nil {
    // 根据错误做出响应
}
  1. 使用 ctx.Err()
  2. // 检查是否因超时而取消
    if ctx.Err() == context.DeadlineExceeded {
        // 根据超时做出响应
    }
      ctx.Err()을 사용하여 작업이 있는지 확인하세요. 시간 초과로 인해 취소되었습니다:

      package main
      
      import (
          "context"
          "net/http"
          "time"
      )
      
      // 设定文件上传超时为 10 秒
      const uploadTimeout = 10 * time.Second
      
      type handler struct{}
      
      func (h *handler) HandleUpload(ctx context.Context, r *http.Request) error {
          // 解析上传的表单
          if err := r.ParseMultipartForm(int64(5e6)); err != nil {
              return err
          }
      
          // 处理上传的文件
          // ...
      
          // 检查是否因超时而取消
          if ctx.Err() == context.DeadlineExceeded {
              return http.ErrRequestTimeout
          }
      
          return nil
      }
      
      func main() {
          http.Handle("/upload", &handler{})
      
          http.ListenAndServe(":8080", nil)
      }

      실제 사례

      다음은 컨텍스트 시간 초과를 사용한 파일 업로드의 실제 예입니다.

      rrreee🎜이 예에서는 파일 업로드 시간 초과를 10초로 설정했습니다. 이 시간 내에 완료되지 않으면 Timeout 오류가 반환됩니다. 🎜

    위 내용은 Golang 파일 업로드에서 컨텍스트 시간 초과를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.