Skip to content

Hot Reload

Cavanshirpro edited this page Sep 19, 2026 · 1 revision

JSON hot reload ve uygulama hata izolasyonu

English · Türkçe · Languages / Diller

Kapsam: JSON API Forge 0.5.1 · İnceleme: 17 Eylül 2026 · Dil: Türkçe

v0.5.1 JSON değişikliklerini ASGI listener'ını kapatmadan uygular. Yeni route/runtime adayı hazırlanır; geçerliyse aktif nesil atomik değiştirilir. Değişmeyen projelerin servisleri korunur.

Değişiklik Uygulama yolu
App ekleme/silme/disable, manifest/config JSON Debounced JSON reload
Proje JSON'larında kullanılan env değerleri App yeniden yükleme sırasında tekrar okunur
Global process ayarı Worker yeniden başlatılmalı
Python hook kodu Ayrı Python reloader veya kontrollü restart
Data/media/database dosyası Yapılandırma watcher kapsamı dışında

Varsayılan polling 1 saniye, debounce 0.5 saniyedir. Ayarlar APPS_AUTO_RELOAD, APPS_RELOAD_INTERVAL_SECONDS, APPS_RELOAD_DEBOUNCE_SECONDS olarak verilir. JSON dosyası 2 MiB, uygulama başına fragment 256 ile sınırlıdır.

Hatalı değişiklik

Bozuk JSON, geçersiz yapılandırma veya runtime startup hatası etkilenmiş uygulamanın son geçerli sürümünü korur. Diğer geçerli app değişiklikleri devam edebilir. İlk açılışta son geçerli sürüm yoksa app kullanılamaz. Prefix/slug ownership çakışmasında klasör sırasına göre rastgele kazanan seçilmez; çakışan app'ler karantinaya alınır.

Eski HTTP istekleri, stream'ler ve WebSocket'ler eski nesilde tamamlanabilir. En fazla iki eski nesil drain durumunda tutulur; uzun yaşayan bağlantılar bunları meşgul ederse sonraki reload bekleyebilir. Dağıtımın "anında herkes yeni koda geçti" garantisi yoktur.

--no-reload ne yapar?

forge dev --no-reload Python worker restart reloader'ını kapatır. JSON reload'u kapatmak için ayrıca APPS_AUTO_RELOAD=false gerekir. Bu iki mekanizmayı aynı ayar sanmayın.

Güvenli belge yazma

Tam dosyayı geçici dosyaya yazıp atomik rename/publish edin. Editör remote save zaten staging + tam proje doğrulaması + revision + kilit + atomik replacement yolunu kullanır. Sadece graph metadata'sını kaydetmek runtime operation'ını kendiliğinden değiştirmenin yerini tutmaz.

Çok worker kurulumda her worker dosyaları ayrı izler. Eşzamanlı geçiş şartsa kontrollü rollout/restart yapın. İzolasyon global identity DB, süreç ölümü veya güvenilmeyen Python kodunu kapsamaz; bunlar ayrı süreç/container sınırları gerektirir.

Kaynak ve doğrulama

Bu sayfa aşağıdaki sabit commitlerdeki davranışı açıklar. Yeni bir sürümde aynı davranışın sürdüğünü varsaymayın.


Wiki ana sayfa · Tüm sayfalar · Sürüm ve bakım

Clone this wiki locally