Coding Lovers
2.01K subscribers
190 photos
16 videos
19 files
234 links
:همه شبکه های اجتماعی یکجا 🌐
Zil.ink/codinglovers

📌 تبلیغات:
@CodingLoversAds

:گروه 🍻
@CodingLovers_GP

:حرفی سخنی 🧑‍💻
@Amir_OfficiaI

:ثبت نمونه کار 🪄
@CodingLovers_result
Download Telegram
🚀 ماکسیمم سرعت FastAPI
قراره ببینیم چجوری میشه سرعت FastAPI رو به بالاترین حد خودش برسونیم.

دقیقا FastAPI چیست؟
یه فریم‌وورک که با Starlette ساخته شده مخصوص نوشتن REST API.
درواقع تنها کاری که انجام میده اینه که درخواست دریافت میکنه، میده به کد شما، جوابو برمیگردونه. خودش هیچ ارتباطی با اینترنت نداره.
خلاصه‌ش اینه که فقط یه تابع‌ست که ورودی میگیره و خروجی میده.
( بیشتر میخوای بدونی باید راجب ASGI بخونی )
🔥 سرعت FastAPI وابسته به چیزای دیگست:
- چه ORMیی استفاده میکنین
- از چه web serverیی استفاده میکنین
- از چه پایتونی استفاده میکنین

پس برای رسیدن به بالاترین سرعت فقط باید انتخاب های درستی داشته باشیم.

🏚 در ORM ها
توی ORM ها، پیشنهاد خودم sqlalchemy هست. درسته سرعتش کمی کنده، ولی اذیت کننده هم نیست و توی پروژه های بزرگ کم نمیاره، اما بقیه کم میارن. اگه براتون فقط سرعت مهمه، میتونین از tortoise استفاده کنین - ( منتظر لایبرریم باشین 🥹 )

🌐 در Web Server ها
پرسرعت ترین وب سرور های پایتون به ترتیب socketify و granian هستن. متاسفانه کار با socketify خیلی مشکل سازه و زیاد با fastapi هماهنگ نیس، درعوض granian کاملا با fastapi اوکی کار میکنه.

توی web server ها، پیشنهاد خود fastapi
به ما uvicorn هست. اما سرعتش پایینه :)
🐍 نسخه پایتون
همیشه از آخرین نسخه استفاده کنین.
همچنین طبق بنچمارک ها، استفاده از granian و fastapi توی PyPy سرعتش چند برابر CPython هست.

💢 درنتیجه
ترکیب ما میشه:
FastAPI + SQLAlchemy + Granian + PyPy

نکته:
اگه هدفتون Rest API نیست، از Starlette جای FastAPI استفاده کنین.


#fastapi #speed
@CodingLovers_OFF 🔥
😁75
Coding Lovers
🚀 ماکسیمم سرعت FastAPI قراره ببینیم چجوری میشه سرعت FastAPI رو به بالاترین حد خودش برسونیم. دقیقا FastAPI چیست؟ یه فریم‌وورک که با Starlette ساخته شده مخصوص نوشتن REST API. درواقع تنها کاری که انجام میده اینه که درخواست دریافت میکنه، میده به کد شما، جوابو…
🚀 ماکسیمم سرعت FastAPI | پارت دوم
خواستم چند تا نکته به پست قبلیش اضافه کنم

📑 لاگ هارو ببندین
توی پروداکشن، همیشه لاگ هارو ببندین. لاگی نباید توی ترمینال نشون داده بشه. نشون داده شدن هر درخواست توی ترمینال، شاید باورش سخت باشه اما سرعت رو نصف میکنه.
برای اینکار، اگه دارین از uvicorn استفاده میکنین، کافیه از پارامتر no access log استفاده کنین:
uvicorn --no-access-log app

🧩 از چند worker استفاده کنین
توی پروداکشن از چند worker استفاده کنین تا به بالاترین سرعت برسین.
uvicorn --workers 4 app

🚫 توی پایتون ratelimit پیاده سازی نکنین
توی پروداکشن، تا جای ممکن داخل پایتون ratelimit پیاده سازی نکنین ( البته بعضی مواقع نیازه ). سعی کنین از ratelimitعه چیزایی مثل nginx یا traefik استفاده کنین.

#fastapi #speed
@CodingLovers_OFF
👍3