امیر توحیدی
امیر توحیدی
خواندن ۲ دقیقه·۴ سال پیش

برای حجم زیاد درخواست روی django rest framework api چی کار کنیم ؟


شاید موضوع خوبی انتخاب نکرده باشم برای این متن یا شاید خیلی دم دستی باشه اما ممکنه سوال خیلی ها باشه

منم خودم تازه دارم در این مورد تحقیق می کنم و می خوام تجربیات خودم یه جا بنویسم شاید بدرد خودم در اینده یا کسی بخوره

در کل خارج از زبان برنامه نویسی خواستی کاری که برای این موارد میشه انجام داد برای درخواستوهای دریافتی یک دیتابیس صف مانند با سرعت بالا ایجاد کرد درخواست ها را در یک صف قرار بدی و این اطلاعات بگیری در یک صف و کارهای مورد نظر روی هر کدام انجام بدی


برای این کار حالا ابزارهای مختلفی وجود داره مثلا روی پایتوت با استفاده از task های async توسط celery و استفاده از بانک اطلاعاتی redis که بر روی رم ذخیره سازی انجام میده این کار انجام داد

یا در تکنولوژی های سطح بالا با راه اندازی apache kafka با یه ساختار message passing که ارائه می کنه درخواست ها را در یک صف قرار میده و توسط consumer ها ی مختلف این درخواست ها پردازی شده و کارهای مربوطش انجام می شود

که apache kafka برای کارهای بزرگ ساخه شده ااس و راه اندازی نسبتا پیچیده ای داره اما celery بر روی پایتون و جنگو به راحتی قابل پیاده استفاده و راه اندازی است


من در نمونه ای که روی جنگو بوسیله celery کار کردم درخواست های ابتدایی با حدود 100 تا ۱۵۰ میلی ثانیه با async کردن دستورات مربوطه به بانک اطلاعاتی سرعت بین ۱۰ تا ۱۵ میلی ثانیه کاهش دادم

این یعنی هندل کردن حدود ۲ میلیون درخواست در ساعت بر روی سیستم pc معمولی


کلا این مبحث میتونه برای پروژه های بزرگ خیلی جذاب باشه و البته پیاده سازی و استفادش نیاز به تجربه داره تا بشه به نحو احسنت استفاده کرد

apache kafka برای زبان های مختلفی قابل استفاده است

اما برای پایتون دارای لایبرری خیلی ساده و استفاده سریع است

زمان اجازه داد به ثورت مجزا هر کدوم سعی می کنم توضیح بدم نحوه کاربرد و استفادش


امیدوارم کمک کرده باشم متاسفانه خودم همیشه دنبال حل مسئله دنبال کلمات کلیدی هستم message passing در مورد حجم request زیاد وasync کردن درخواست راهکارهای عملی برای هندل کردن ای موارد است


djangopythonceleryapache kafka
امیر توحیدی هستم. برنامه نویس و توسعه دهنده یا هر چیزی که شما بگید. :)
شاید از این پست‌ها خوشتان بیاید