عنوان:

‫نحوه خاموش کردن برنامه در حال اجرا برای Deploy جدید


نویسنده: میلاد احمدی مقدم
تاریخ: ۱۴۰۵/۰۵/۲۷ ۱۵:۵۸
آدرس: www.dntips.ir
شما چطور یک ورژن جدید از این سایت رو زمانی که در حال استفاده توسط کاربران هست deploy می‌کنید. فرض کنید چند کاربر همزمان در حال انجام عملیات‌هایی مثل Create، Update یا Delete هستند. شما چطور اطمینان پیدا می‌کنید که عملیات‌های در حال اجرا به پایان رسیده‌اند و زمان مناسبی برای Shutdown و Deploy نسخه جدید است؟ من با تحقیقاتی که انجام دادم به IHostApplicationLifetime و مفهوم Graceful Shutdown رسیدم و تصورم این است که می‌توان از StopApplication برای شروع فرآیند Shutdown استفاده کرد تا درخواست‌های در حال اجرا فرصت تکمیل شدن داشته باشند.
public class ShutdownService(IHostApplicationLifetime lifetime)
{
    public void Shutdown()
    {
        lifetime.StopApplication();
    }
}

builder.Services.AddSingleton<ShutdownService>();
اما مطمئن نیستم این روش به‌تنهایی برای یک سایت Production کافی باشد، مخصوصاً اگر درخواست جدید همزمان در حال ورود باشد. ممنون میشم اگر روش Deploy خودتون برای یک سایت در حال اجرا و نحوه مدیریت Requestهای در حال اجرا هنگام Deploy رو توضیح بدید.

نظرات