Gece 02:30. Gözlerim ekrana yapışmış, bir Selenium botunun neden bir butona tıklamadığını debug ediyorum. Birden, mail bildirimim çaldı. "İşte!" dedim, "Bot çalıştı, raporu attı." Açtım baktım, gönderen: noreply@myproject.com. Konu: "CRITICAL: Ana Otomasyon Botu #3 Hata Döngüsüne Girdi".
İçeriği okuyunca kafayı yiyecektim. Meğerse benim o "akıllı" botum, aynı JSON parsing hatasını 127. kez almış ve log dosyası 1 GB'ı geçmiş. Mailin son cümlesi ise şaka gibiydi: "Önerilen Çözüm: Bu hatayı izleyip düzeltecek ve bana rapor edecek ikincil bir supervisor bot yazılmalı."
Yani benim yazdığım kod, bana kendi bakımı için yeni kod yazmamı söylüyordu. İlk hissettiğim şey, derin bir yalnızlık ve makineye yenilmişlik hissiydi. Sonra kodu açtım. Basit bir `try-except` bloğu vardı ve hata yakalandığında sadece log'a yazıp aynı işlemi tekrar deniyordu.
Python:
while True:
try:
veri = json.loads(güvenilmez_api_cevabi)
isle(veri)
except json.JSONDecodeError as e:
log_devasa_dosyasi.write(f"Hata: {e}\n")
# Burada durmak yok, baştan al!
Sorun buydu! Bot, "iyi niyetle" işini yapmaya çalışıyor ama dış dünyadan (API'den) gelen bozuk veriyi hiçbir zaman temizleyemiyordu. Kendi kendini düzeltme mekanizması SIFIR. Sadece bağırıp duruyordu.
İkinci bir bot yazmak yerine, asıl bota biraz "akıl" eklemeye karar verdim. İhtiyacı olan şey, bir devre kesici (circuit breaker) mantığıydı. Aynı hatayı belirli bir süre içinde ardışık olarak X kez alırsa, durmalı ve insan müdahalesi için sinyal vermeliydi.
Python:
class AkilliBot:
def __init__(self):
self.ardisik_hata = 0
self.max_hata = 5
def calistir(self):
while self.ardisik_hata < self.max_hata:
try:
# İşlemleri yap
self.ardisik_hata = 0 # Başarılı olunca sıfırla
except KritikHata as e:
self.ardisik_hata += 1
logla(e)
if self.ardisik_hata >= self.max_hata:
insana_mail_at("Bot kendini durdurdu, gel beni kurtar!")
break # Döngüden çık!
Bu küçük değişiklikle, bot artık körü körüne çalışmak yerine, "Burada bir terslik var, durmalıyım" diyebiliyor. Mail atan ikinci bir bota gerek kalmadı.
Sonuçta, otomasyon demek, "koy ve unut" demek değilmiş. "Akıllıca koy, kontrollü unut" demekmiş. O gece bana mail atan bot aslında şunu söylüyormuş: "Bana sadece ne yapacağımı değil, ne yapmayacağımı da öğret."
Siz de benzer bir kısır döngüye, kendi kendini besleyen bir hataya düştünüz mü? "Akıllı" dediğimiz sistemlerimiz ne kadar aptalca davranabiliyor, değil mi?