>  기사  >  백엔드 개발  >  고루틴은 Google App Engine(표준 환경)에서 HTTP 요청보다 오래 지속될 수 있나요?

고루틴은 Google App Engine(표준 환경)에서 HTTP 요청보다 오래 지속될 수 있나요?

DDD
DDD원래의
2024-10-29 00:36:30878검색

Can Goroutines Outlive HTTP Requests in Google App Engine (Standard Environment)?

Google App Engine(표준 환경)에서 Goroutines가 HTTP 요청보다 오래 지속될 수 있습니까?

Google App Engine의 표준 환경에서는 다음이 가능해 보일 수 있습니다. HTTP 요청이 처리된 후에도 계속 실행되는 고루틴을 만듭니다. 그러나 이 접근 방식은 문제를 일으킬 수 있습니다.

func MyHandler(w http.ResponseWriter, r *http.Request) {

  go func() {
    // do something ...
  }() 

  return // 200
}

답변:

요청보다 오래 지속되는 고루틴은 App Engine의 표준 환경에서 지원되지 않습니다. 대신, 런타임.RunInBackground를 사용하여 백그라운드 고루틴에서 코드를 실행하세요. 제공된 함수는 요청 컨텍스트와 구별되는 백그라운드 컨텍스트를 수신합니다. 인스턴스당 동시 백그라운드 요청은 10개로 제한된다는 점에 유의하는 것이 중요합니다.

func MyHandler(w http.ResponseWriter, r *http.Request) {

  err := runtime.RunInBackground(c, func(c appengine.Context) {
    // do something...
  })

  return // 200
}

또는 요청 컨텍스트 내에 있는 고루틴이 지원됩니다. 그러나 App Engine의 런타임 환경은 단일 운영체제 스레드에서만 고루틴을 지원하므로 병렬 실행이 발생하지 않습니다.

위 내용은 고루틴은 Google App Engine(표준 환경)에서 HTTP 요청보다 오래 지속될 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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