Konuyu Açan
#1
Bir endpoint’in yanıtını oluştururken veritabanı ve birkaç HTTP servisine paralel istek attığımızı düşünelim. İstemci beklemekten vazgeçip bağlantıyı kapatsa bile bu işler kendi başına devam edebilir; sonuç artık kullanılmayacak olsa da kaynak tüketilir. Node.js tarafında bu iptali alt işlemlere nasıl taşımak gerektiğini merak ediyorum.
İptal sinyalini uçtan uca taşımak:
Zaman aşımı ayrı bir ihtiyaç: İstemci bağlantısı sürse bile alt servis yanıt vermeyebilir. Bu nedenle istemci iptaliyle zaman aşımını tek bir kavram gibi ele almak yerine, ikisini de kapsayan bir iptal akışı kurmak daha anlaşılır geliyor. Ayrıca kullandığımız Node.js sürümünde
Hata yönetimi: İptal beklenen bir durum olabilir; her
İptal sinyalini uçtan uca taşımak:
fetch bir AbortSignal alabiliyor. İstek bağlamında oluşturulan sinyali alt servislere aktarınca, bağlantının kapandığını uygulama katmanında yakaladığımız durumda bekleyen HTTP çağrılarını iptal etmek mümkün. Ancak bu davranış kullandığımız HTTP çatısına ve bağlantı yaşam döngüsü olaylarını nasıl ele aldığına bağlı; her projede aynı olayı dinlemek güvenli olmayabilir.Zaman aşımı ayrı bir ihtiyaç: İstemci bağlantısı sürse bile alt servis yanıt vermeyebilir. Bu nedenle istemci iptaliyle zaman aşımını tek bir kavram gibi ele almak yerine, ikisini de kapsayan bir iptal akışı kurmak daha anlaşılır geliyor. Ayrıca kullandığımız Node.js sürümünde
AbortSignal yardımcılarının mevcut olup olmadığını kontrol etmek gerekiyor.Hata yönetimi: İptal beklenen bir durum olabilir; her
AbortError’ı sunucu hatası gibi loglamak gürültü yaratır. Siz istemci kopmasını nasıl tespit edip veritabanı sorgularına ve alt HTTP isteklerine yayıyorsunuz? Uyguladığınız yaklaşımda hangi köşe durumlar sorun çıkardı?