Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Goroutines Menjalani Permintaan HTTP dalam Enjin Apl Google (Persekitaran Standard)?

Bolehkah Goroutines Menjalani Permintaan HTTP dalam Enjin Apl Google (Persekitaran Standard)?

DDD
DDDasal
2024-10-29 00:36:30878semak imbas

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

Bolehkah Goroutines Menjalani Permintaan HTTP dalam Enjin Apl Google (Persekitaran Standard)?

Dalam Persekitaran Standard Enjin Aplikasi Google, nampaknya mungkin untuk buat goroutine yang terus berjalan selepas permintaan HTTP telah dikendalikan. Walau bagaimanapun, pendekatan ini boleh membawa kepada isu:

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

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

  return // 200
}

Jawapan:

Gorutin yang melebihi permintaan tidak disokong dalam Persekitaran Standard Enjin Apl. Sebaliknya, gunakan runtime.RunInBackground untuk melaksanakan kod dalam goroutine latar belakang. Fungsi yang disediakan akan menerima konteks latar belakang yang berbeza daripada konteks permintaan. Adalah penting untuk ambil perhatian bahawa terdapat had 10 permintaan latar belakang serentak bagi setiap kejadian.

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

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

  return // 200
}

Sebagai alternatif, gorout yang hidup dalam konteks permintaan disokong. Walau bagaimanapun, persekitaran masa jalan App Engine hanya menyokong goroutine pada urutan sistem pengendalian tunggal, jadi tiada pelaksanaan selari akan berlaku.

Atas ialah kandungan terperinci Bolehkah Goroutines Menjalani Permintaan HTTP dalam Enjin Apl Google (Persekitaran Standard)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn