Discord Botunuzda Node.js Sürecini Güvenli Bir Şekle Sonlandırma

samet_34

Yeni Üye
Katılım
Eyl 2026
Konular
1
Mesajlar
1
Tepki puanı
0
Görüntülenme
0
Discord botunuzda uzun süreli işlemler (örneğin, veri tabanı bağlantıları, WebSocket bağlantıları) açık kalırsa, normal çıkış process.exit() komutuyla aniden kapanışa yol açabilir. Aşağıda, botunuzu güvenli bir şekilde kapatmak için kullanılabilecek yöntemler listelenmiştir.

1. Sinyal Yakalama​

JavaScript:
const shutdown = () => {
  console.log('Bot kapanıyor...');
  // Bağlantıları kapat
  client.destroy();          // Discord.js için
  db.close();                // Veritabanı (örneğin, pg, mongoose)
  process.exit(0);
};

process.on('SIGINT', shutdown);   // Ctrl+C
process.on('SIGTERM', shutdown);  // systemd / pm2 tarafından gönderilen sinyal
Bu, işlem kapatılmadan önce gerekli temizlik adımlarını gerçekleştirir.

2. process.exit() Kullanımı​

Eğer doğrudan çıkmak zorundaysanız:
JavaScript:
process.exit(0);  // Uygun exit kodu ile
Ancak, burada bağlantıların kapanmasını beklemek için yukarıdaki sinyal yakalama bloğu mutlaka aktif olmalıdır.

3. İşlem Yöneticisi (pm2) ile Otomatik Kapanma​

  • pm2 start index.js --name mybot
  • Botu kapatmak için pm2 stop mybot komutu, pm2’nin sinyal göndererek graceful shutdown yapmasını sağlar.
  • pm2 restart mybot komutu, kapanma sürecini aynı şekilde yönetir.

4. Systemd ile Hizmet Olarak Çalıştırma​

/etc/systemd/system/mybot.service içinde:
INI:
[Service]
ExecStart=/usr/bin/node index.js
Restart=on-failure
KillMode=control-group
systemctl stop mybot komutu, systemd’nin SIGTERM sinyalini göndererek yukarıdaki sinyal yakalama bloğunu tetikler.

5. Yedekleme ve Test​

Kapanma adımlarını üretim ortamında denemeden önce:
  • Yerel ortamda node index.js ile botu başlatıp CTRL+C ile durdur.
  • Bağlantıların düzgün kapanıp kapanmadığını kontrol edin (ör. veritabanı logları).
  • Üretimde, pm2 logs ile kapanma sürecini izleyin.

Bu adımlar, Discord botunuzun kapanma sırasında veri kaybı veya bağlantı hatası yaşaması riskini azaltır. Botunuzda kullandığınız kütüphanelere göre (ör. discord.js, eris) destroy veya disconnect metodlarını da aynı şekilde çağırmanız gerekebilir.

İlgili konular​

 
Geri
En Üst