چطوری مرحلهی فعال کردن کاربر رو شبیهسازی کنیم؟
جمعه, ۱۰ مرداد ۱۳۹۹، ۰۱:۲۹ ب.ظ
تقریباً همهی ما عبارت «کد فعالسازی خود را وارد کنید» رو به طرق مختلف دیدیم. این کدها که بهصورت تصادفی (که نه ۱۰۰ درصد تصادفی) تولید میشن و به ایمیل یا موبایل ما ارسال، و پس از وارد کردن کد صحیح حساب کاربری ما بهطور کامل «فعال» میشه.
در این پست میخوام با پایتون، کرفس(!) شوخی میکنم :)) با Celery و Redis؛ از ساختن کاربر تا فعالسازی حساب کاربر رو با هم جلو بریم.
نکتهی خیلی مهم: اینجا شما ردیس و سلری رو یاد نمیگیرید فقط دید پیدا میکنید که اینا چطوری کار میکنن!
خب من یه دایرکتوری دلخواه به اسم activeuser برای این مطلب ساختم. که فایلهای خودم رو داخلش قرار میدم.
به دایرکتوری که ساختم میرم و مرحلهی بعد ساختن یک محیط مجازی (Virtual Environment) هست که خب من ساختم (شما هم بسازید).
ساختن virtual environment
حالا نوبت به فعال کردن محیط مجازی میرسه.
فعال کردن venv.
میبینید که (vnev.) به اول ترمینال من اضافه شده که به معنی فعال کردن موفقیتآمیز محیط مجازیه.
حالا ما باید دو بسته celery و redis رو نصب کنیم.
نکته: چون من از RabbitMQ استفاده میکنم میبایست RabbitMQ رو قبل از نصب Celery روی کامپیوترتون نصب کنید که نصبش رو با گوگل کردن میتونین یاد بگیرید.
خب بستهها رو نصب میکنم.
نصب بستههای مورد نیاز
و در نهایت دو فایل یکی برای Taskهای celery و یکی هم برای main پروژه میسازم.
ساختن فایلهای مورد نیاز
حالا با یه ادیتور یا IDE یا هر چیزی که دوست دارید دوتا فایل رو باز کنید.
من یک کلاس User توی main.py میسازم.
ساختن کلاس کاربر
چون میخوایم عملیات فعالسازی رو شبیهسازی کنیم لازمه که یه json کوچیک داشته باشیم که در متد سازندهی خودم یک دیکشنری با سه پارامتر شماره موبایل، نام و نام خانوادگی و وضعیت کاربر ساختم. و چون کاربر بهصورت پیشفرض غیرفعاله، داخل همون سازنده مقدار is_active رو برابر با False قرار میدم.
و در ادامه در فایل tasks تنظیمات لازم برای ردیس و سلری رو اعمال میکنم.
تنظیمات ردیس و سلری
بعد از تنظیمات، دو تا task مینویسیم. یکی برای ساختن کد در ردیس و یکی هم برای عملیات فعالسازی.
متدهای لازم برای سلری
در متد اول پارامتر user که همون شماره موبایل کاربر هست رو میگیریم و برای هر شمارهای که کاربران وارد کنند یک کد فعالسازی تولید میکنیم. که هر کد بعد از ۱۲۰ ثانیه مقضی میشوند (مشابه زمانهای ۵۹ ثانیهای که در اپلیکیشنها که احتمالاً دیدین).
در متد دوم علاوهبر شماره موبایل کاربر، پارامتر code را هم میگیریم، تا یک مقایسه بین کد موجود در ردیس با کد وارد شده توسط کاربر انجام دهیم. هر چند زمان ۱۲۰ ثانیهای را برای حذف شدن کد در نظر گرفتیم اما برای سریعتر خالی شدن حافظه (رم) بهتره که کد رو در صورت درستی حذف کنیم.
به فایل main برمیگردم و دو متد دیگه رو به کلاس خودم اضافه میکنم.
متدهای لازم برای کلاس کاربر
متد اول که برای فعال کردن کاربر هست. شماره موبایل کاربر را بهعنوان ورودی برای متد set_active_code ارسال میکنم و پارامتر ورودی متد کدی هست که کاربر وارد میکنه. که در نهایت این کد و شماره کاربر بهعنوان ورودی به متد check_code ارسال میشوند.
ساختن نمونهای از کاربر
و در نهایت یک نمونه از کلاس کاربر میسازم. و کدی را برای کاربر ارسال و در ادامه کدی را کاربر دریافت میکنم. در نهایت اطلاعات کاربر را چاپ میکنم و برنامه به پایان میرسه.
اول tasks رو اجرا میکنم.
اجرای سلری
و در نهایت فایل اصلی رو اجرا میکنم.
اجرای برنامه
میبینیم که اول کد اشتباه وارد کردم، اما وقتی کد درست رو وارد کردم برنامه بهدرستی کار کرد و کاربر فعال شد!
کد ساخته شده در ردیس
این هم کدی که در ردیس ساخته شده بود.
پایان./
ممنون از مطلب کاربردیتون .
وبلاگ شما رو دنبال کردیم . لطفا وبلاگ ما رو دنبال کنید