Aurabase Logosu
aura tabanıdokümanlar
dokümanlar›Edge Functions›How an invocation works

Bir çağrı nasıl çalışır?

Sınırları, hata kodlarını ve gözlemlediğiniz zamanlamayı açıklamak için tek bir çağrının gözden geçirilmesi.

8 dk. oku·Seviye ileri düzey·12 Eki 2026 tarihinde revize edildi
Bu İngilizce metin, Fransızca orijinalinden otomatik olarak oluşturulmuştur ve henüz incelenmemiştir.
Bu sayfa otomatik olarak çevrildi. İngilizce versiyonu yetkilidir.
#
Yol

1. Bir çağrının yolu

bir çağrıtext
your code ── invoke('hello') ──▶ gateway (data plane)
                                   • checks the key and the user's token
                                   • finds the project from the host
                                   • adds x-aura-role, x-aura-user-id, x-aura-project-id
                                   │  message bus (request / reply)
                                   ▼
                           functions service
                                   • access policy: only invoke is public
                                   • reads the function, reserves one invocation of the plan quota
                                   │  HTTP
                                   ▼
                            edge runtime
                                   • loads code, limits and variables
                                   • starts an isolated V8 worker
                                   • rebuilds the request you described
                                   ▼
                             your function ── Response ──▶ back along the same path

Ağ geçidi ve işlevler hizmeti bir mesaj veri yolu üzerinden konuşur. Bu veri yolundaki bir mesajın boyut sınırı vardır, bu nedenle yaklaşık 256 KiB'nin üzerindeki bir istek veya yanıt iletilmez: bkz. sınırları.

#
Çalışma zamanı

2. Çalışma zamanının içinde

  • Çağrı başına bir çalışan. Kenar çalışma zamanı, her çağrı için, işlevin bellek sınırı ve zaman aşımı ile birlikte yeni bir yalıtılmış V8 çalışanını başlatır. Bellekteki hiçbir şey bir çağrıdan diğerine hayatta kalmaz: durumu bir değişkende tutmayın. Veritabanınızı veya Depolama alanınızı kullanın.
  • Kod birkaç saniyeliğine önbelleğe alınır. Çalışma zamanı, bir işlevin kodunu ve sınırlarını 5 saniye boyunca tutar ve dağıttığınızda bunları bırakır. Değişkenler her çağrıda okunur.
  • İsteğiniz yeniden oluşturuldu. Çalışma zamanı tanımladığınız isteği oluşturur (method, path, headers, body) ve bunu Deno.serve işleyicinize iletir. Bu nedenle bir işlev herhangi bir HTTP sunucusu gibi davranır.
  • Çalışma zamanı zaman aşımını zorlar. timeout_secs süresi dolduğunda, çalışanı iptal eder; arayan kişi bu gecikmeden sonra bir hata görür.
  • WASM işlevleri bellek, zaman ve talimatlarla ilgili sınırlamalarla hizmetin içinde çalışır. Bir WASM işlevi, yanıtın logs alanında görünen günlük satırlarını raporlayabilir; bir Deno işlevi olamaz.
#
Yanıtlar

3. Zarf ve ham mod

Hizmetin, işlevinizin yanıtını döndürmenin X-Aurabase-Invoke-Mode istek başlığı tarafından seçilen iki yolu vardır.

Zarf (varsayılan)Ham (raw)
HTTP durumuHer zaman 200Fonksiyonun kendi durumu
Vücut{ data: { status, headers, body, logs, duration_ms }, meta }Fonksiyonun baytları
İçerikJSON veya UTF-8 metniİkili dahil her şey
KullananresponseType: 'json', Stüdyo'text', 'blob', 'arrayBuffer', doğrudan HTTP

Zarf, bir JSON yanıtının çağrının durumunu, başlıklarını ve süresini taşıyabilmesi için mevcuttur. Sınırı, baytların JSON'da seyahat edememesidir: ikili yanıtın ham moda ihtiyaç duymasının nedeni budur. SDK, modu responseType arasından seçer.

Ham modda hizmet, işlevinizin yanıtlarına x-aurabase-invoke-origin: function ekler. Ağ geçidinden veya çalışma zamanından gelen bir hata onu taşımaz. SDK, FunctionsHttpError'yi (işleviniz yanıtlandı) FunctionsRelayError'den (platform başarısız oldu) bu şekilde ayırır.

#
Zaman

4. Zaman, ölçüm ve arızalar

Üç zaman aşımı iç içe yerleştirilmiştir, böylece hiçbiri içindekinden önce bitmez:

Zaman aşımları, dışarıdan içeriyetext
gateway 380 s  ⊃  message bus 370 s  ⊃  function timeout_secs (≤ 300 s) + margin

Hizmet, timeout_secs artı bir kenar boşluğu için çalışma zamanını bekler. Çalışma zamanı timeout_secs adresindeki çalışanı iptal ettiğinden normalde o anda işlevde bir hata görürsünüz ve yalnızca çalışma zamanının kendisi yanıt vermeyi durdurduğunda 504 TIMEOUT hatasını görürsünüz. Dolayısıyla bir 504, fonksiyonunun başlatıldığı ve etkileri olabileceği anlamına gelir: idempotent olmayan bir çağrıyı körü körüne tekrarlamayın.

Ölçüm ve kota:

  1. Çağrıdan önce hizmet, plan kotasından bir çağrı ayırır. Kotanın dolması durumunda çağrı burada 403 ile durdurulur.
  2. Çağrıdan sonra çağrıyı ve süresini milisaniye cinsinden kaydeder.
  3. İşleviniz yanıt vermeden çağrı başarısız olursa rezervasyon iptal edilir ve hiçbir şey sayılmaz.
#
Sonuçlar

5. Kodunuz için aşağıdakiler

  • Her aramayı kısa ve durumsuz tutun. Uzun çalışma için, bir işi kuyruğa alır.
  • İstekleri ve yanıtları küçük tutun; dosyaları Depolama alanına koyun ve bir referans iletin.
  • İşlevleri bağımsız hale getirin: yeniden denenen bir iş, bir ağ hatasından sonra bir istemcinin yeniden denemesi veya yinelenen bir cron teslimi, kodunuzu iki kez çalıştırabilir.
  • Platformun kimlik başlıklarında yetkilendirme yapın çünkü bunlar, arayanın taklit edemeyeceği tek değerlerdir. güvenliği konusuna bakın.
  • Kendi gecikme sürenizi ölçün: her çağrı, bir çalışanın işe başlaması için ödeme yapar. Minimal bir işlev, yerel bir yığında duration_ms: 74 bildirdi.