درود استاد آیا میشه از این مبحث در جنگو هم استفاده کرد؟ مثلا اگر ۱۰ هزارتا درخواست به سمت سرور بیاد چطور این تعداد درخواست هندل بشه بدون اینکه سرور کند بشه؟
سلام خدمت شما دوست عزیز
ببینین اشتباه برداشت نکنین. ساختار async تاثیری روی سرعت پردازش اطلاعات نداره. صرفا امکان پردازش موازی رو فراهم میکنه. یعنی به جای اینکه سرور منتظر اتمام پردازش درخواست نفر اول باشه، پردازش درخواست نفر بعدی رو شروع میکنه و این یعنی اگر یک درخواست 3 ثانیه زمان پردازش نیاز داره ، این 3 ثانیه تغییری نمیکنه و صرفا تعداد درخواست های موازی بیشتر میشه
باید در نظر بگیرین که منابع سرور روی پردازش موازی بسیار با اهمیت هستش و محدودیت های خود پایتون رو هم باید در نظر گرفت
برای استفاده از قابلیت های async در جنگو باید از وب سرورهایی که async رو پشتیبانی میکنن استفاده کنین
یعنی در کنار تنظیم wsgi که به صورت پیشفرض در جنگو در فایل settings.py تنظیم شده باید asgi رو هم تنظیم کنین و از وب سرور مناسب برای اون استفاده بشه. وب سرورهایی که قابل استفاده هستن daphne ، uvicorn و ... هستن که روش استفاده از اونها رو میتونین توی داکیومنت های رسمی هر کدوم مطالعه کنین
استاد اینکه فرمودید پردازش موازی ، مگر سلری این کار رو انجام نمیده برای ما؟
ببینین async در پایتون با async در celery متفاوت هستش دوست من
ابزار celery برای مدیریت تسک های پس زمینه هستش و معمولا برای مواردی استفاده میشه که زمان انجام طولانی نیاز دارن مثل پردازش فایل های اکسل و یا ارسال ایمیل های تبلیغاتی برای کاربرهای سایت که معمولا ممکنه تا چند ساعت هم زمان نیاز داشته باشن
اما async در پایتون برای پردازش های موازی در یک process هستش و برای تسک های پس زمینه مثل celery مناسب نیست.
به عنوان مثال زمانی که مباحث IO مطرح میشه ما میتونیم از async پایتون استفاده کنیم. منظور از io کلیه ی مواردی هستش که به منابع خارجی ( خارج از محیط کد پایتون ما ) اشاره داره مثل کوئری های دیتابیس یا فراخوانی اطلاعات از یک API
توی همچین درخواست هایی ما نمیدونیم چه مدت زمانی طول میکشه که اطلاعات از منابع خارجی دریافت بشه پس thread رو lock نمیکنیم و اجازه میدیم که پایتون درخواست های دیگه رو هم در این بازه شروع به پردازش کنه و هر موقع نتیجه ی مورد نظر از منابع خارجی دریافت شد، ادامه ی پردازش انجام میشه
برای همچین مواردی از celery استفاده نمیشه دوست من چون خود celery تعداد worker های محدودی داره اما async در پایتون نسبت به منابع سیستم شما میتونه تعداد زیادی از درخواست های IO رو مدیریت کنه
سپاس🙏
خواهش میکنم
موفق باشین :)