Go에서 파일 업로드에 컨텍스트 시간 초과를 사용하면 클라이언트가 업로드를 완료할 때까지 서버가 오랜 시간 동안 기다리는 것을 방지할 수 있습니다. 방법은 다음과 같습니다. 1) 새 컨텍스트 객체를 생성하고 시간 초과 값을 설정합니다. 2) 컨텍스트 객체를 파일 작업에 전달합니다. 3) ctx.Err()을 사용하여 시간 초과로 인해 작업이 취소되었는지 확인합니다. 실제 예: 1) 업로드 시간 초과 설정, 2) 양식 분석, 3) 파일 처리, 4) 시간 초과로 인해 작업이 취소되었는지 확인합니다. 이 예에서는 업로드가 10초 이내에 완료되거나 시간 초과 오류가 반환되는지 확인합니다.
Go에서 파일을 업로드할 때 컨텍스트 시간 초과 사용
Go에서 컨텍스트 패키지를 사용하여 시간 초과를 설정하는 것은 파일 업로드 시나리오를 처리하는 데 중요합니다. 이를 통해 업로드 작업 시간을 제한하고 클라이언트가 업로드를 완료할 때까지 서버가 오랫동안 기다리지 않도록 할 수 있습니다.
사용 방법
다음 단계를 사용하여 파일 업로드에서 컨텍스트 시간 초과를 사용할 수 있습니다.
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel()
http.Request
와 같은 파일 업로드 작업을 처리합니다. http.Request
:// 根据 ctx 处理上传的文件 if err := handler.HandleUpload(req.Context(), req); err != nil { // 根据错误做出响应 }
ctx.Err()
// 检查是否因超时而取消 if ctx.Err() == context.DeadlineExceeded { // 根据超时做出响应 }
ctx.Err()
을 사용하여 작업이 있는지 확인하세요. 시간 초과로 인해 취소되었습니다: 다음은 컨텍스트 시간 초과를 사용한 파일 업로드의 실제 예입니다. 위 내용은 Golang 파일 업로드에서 컨텍스트 시간 초과를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!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)
}