5 چارچوب وب ناهمزمان برتر برای پایتون

برنامه نویسی ناهمزمان اکنون یک شهروند درجه یک در پایتون است. اگر یک توسعه دهنده وب هستید ، چارچوب های شگفت انگیزی وجود دارد که می توانید از بین آنها انتخاب کنید!


همانطور که از نوشتن است ، ناهمزمان فقط یک کلمه کلیدی در انجمن پایتون نیست. با انتشار آن asyncio Python تأثیر Node.js را در توسعه وب تأیید کرد و دو کلمه کلیدی جدید را به زبان معرفی کرد – async و await. این مسئله بسیار بزرگ بود زیرا زبان پایتون برای گسترش نحو اصلی بسیار محتاط است مگر اینکه یک نیاز فشرده وجود داشته باشد ، و این تنها نشان می دهد که توسعه دهندگان پایتون چقدر از اهمیت اساسی برخوردار است و قابلیت های ناهمزمان را نیز در نظر گرفته است..

در نتیجه ، سیلابی برنامه نویسی ناهمزمان افتتاح شد: کتابخانه های جدید و قدیمی شروع به استفاده از ویژگی coroutines کردند ، چارچوب های ناهمزمان در محبوبیت منفجر شدند و کتابهای جدید هنوز هم در حال نوشتن است. عملکرد به صورت همتراز یا بهتر از Node.j’s غیر قابل شنیدن نیست ، و مگر اینکه الگوهای بارگیری شما شامل کارهای زیادی با پردازنده CPU باشد ، هیچ دلیلی وجود ندارد که نتوانید چند هزار درخواست در هر ثانیه انجام دهید.

اما انگیزه کافی!

بیایید منظره فعلی پایتون را بررسی کنیم و برخی از چارچوب های برتر ناهمزمان را بررسی کنیم.

گردباد

با کمال تعجب, گردباد چارچوب جدیدی نیست. انتشار اولیه آن در سال 2009 (دقیقاً ده سال پیش ، از زمان نوشتن) بود و از آن زمان ، تمرکز آن بر تهیه برنامه نویسی ناهمزمان جامد با همزمانی بالا بوده است..

Tornado اساساً چارچوب وب نیست. این مجموعه ای از ماژول های ناهمزمان است که برای ساخت ماژول چارچوب وب نیز استفاده می شود. به طور خاص ، این ماژول ها عبارتند از:

  • کوروتین ها و بدوی های دیگر (tornado.gen ، tornado.locks ، tornado.queues و غیره)
  • ماژول های شبکه (tornado.ioloop ، tornado.iostream و غیره)
  • سرورها و سرویس دهنده های ناهمزمان (tornado.httpserver ، tornado.httpclient و غیره)

اینها برای تولید ماژولهای چارچوب نهایی ترکیب شده اند: tornado.web ، tornado.routing ، tornado.template و غیره.

واردات tornado.ioloop
واردات tornado.web

کلاس MainHandler (tornado.web.RequestHandler):
def get (خود):
نوشتن خود ("سلام دنیا")

def make_app ():
بازگشت tornado.web.Aplication ([
(r)"/", MainHandler),
])

اگر __name__ == "__ماه":
برنامه = make_app ()
app.listen (8888)
tornado.ioloop.IOLoop.current () شروع ()

Tornado دنباله ای قوی و متعهد در جامعه پایتون دارد و توسط معماران با تجربه برای ساخت سیستم های بسیار توانمند مورد استفاده قرار می گیرد. این چارچوبی است که به مدت طولانی جوابگوی مشکلات همزمانی بوده است ، اما شاید به عنوان اصلی تبدیل نشده باشد زیرا از استاندارد WSGI پشتیبانی نمی کند و بسیار زیاد خرید نیز بود (به یاد داشته باشید که بخش عمده ای از کتابخانه های پایتون هنوز هماهنگ هستند. ).

سانیک

سانیک یک چارچوب “مدرن” به معنای واقعی کلمه است: از نسخه پایتون در زیر 3.6 پشتیبانی نمی کند ، از نحو ساده و جهانی async / انتظار خارج از کادر پشتیبانی می کند ، و در نتیجه باعث نمی شود بارهای زیادی را بخوانید. قبل از اینکه بتوانید اولین کنترل HTTP خود را بنویسید ، مستندات را نگه دارید و موارد مهم را در ذهن خود نگه دارید.

در نتیجه ، نحو حاصل بسیار دلپذیر است (به نظر من ، حداقل)؛ با کدی که می نویسید با هر میکرو ساختار دیگر (مانند فلاسک ، CherryPy) تنها با چند پیوند در آن پاشیده شده شبیه است:

از واردات سانیک Sanic
از sanic.response import json

برنامه = Sanic ()

@ app.route ("/")
آزمون async def (درخواست):
بازگشت json ({"سلام": "جهان"})

اگر __name__ == "__ماه":
app.run (میزبان ="0.0.0.0", بندر = 8000)

احتمالاً سانیک محبوب ترین و محبوب ترین چارچوب پیوند آسمانی در دنیای پایتون است. این برنامه تقریباً تمام ویژگی هایی را که شما می خواهید برای پروژه های خود داشته باشید – مسیریابی ، میان افزار ، کوکی ها ، نسخه سازی ، طرح ها ، نمایش کلاس مبتنی بر ، پرونده های استاتیک ، جریان ، سوکت ها و غیره – و آنچه از جعبه ارائه نمی دهد – قالب ، پشتیبانی از پایگاه داده ، پرونده I / O ، صف – می تواند اضافه شود زیرا کتابخانه های ASNC فقط به اندازه کافی برای امروز وجود دارند.

ویبورا

ویبورا یک پسر عموی نزدیک Sanic است ، با این تفاوت که سریعترین سرور وب سایت Python در آنجاست. در حقیقت ، اولین بازدید از وب سایت آن شما را با یک مقایسه چارچوب استقبال می کند:

همانطور که مشاهده می کنید ، Vibora ادعا می کند چندین برابر سریعتر از چارچوب های کلاسیک و بیش از دو برابر سریع تر از Sanic ، نزدیکترین رقیب خود است. البته معیارها باید با یک دانه نمک گرفته شوند. ��

اگرچه در نحو و ویژگی ها ، Vibora با Sanic قابل مقایسه است (یا شاید حتی بهتر از آن باشد که کتابخانه های محبوب را به هم می زند و چیزهایی مانند قالب در خارج از جعبه در دسترس است) ، من فکر می کنم Sanic را بالغ تر می کند زیرا در حدود طولانی تر بوده است. جامعه بزرگتر.

از واردات ویبورا Vibora ، JsonResponse

برنامه = Vibora ()

@ app.route (‘/’)
async def home ():
بازگشت JsonResponse (hel ‘سلام’: ‘جهان’)

اگر __name__ == ‘__main__’:
app.run (میزبان ="0.0.0.0", بندر = 8000)

اگر شما یک کاراگاه عملکرد هستید ، Vibora ممکن است قایق شما را شناور کند. این گفت که ، از آنجا که نوشتن Vibora دستخوش یک بازنویسی کامل می شود تا سریع تر و سریع تر شود ارتباط دادن به نسخه عملکرد آن می گوید که تحت “توسعه سنگین” قرار دارد. این اتفاق برای کسانی که ویبورا را زودتر از موعد انتخاب کرده اند بسیار ناگوار خواهد بود و باید به زودی با تغییراتی روبرو شوند ، اما سلام ، روزهای ابتدایی در جهان async پایتون است و هیچ کس انتظار ندارد که اوضاع پایدار باشد.

کوارت

اگر از پیشرفت در Flask لذت می برید اما به دلیل عدم پشتیبانی async غافل می شوید ، لذت خواهید برد کوارت زیاد.

کوارت با سازگار است ASGI استاندارد ، که جانشین استاندارد معروف WSGI است و پشتیبانی async را ارائه می دهد. نکته جالب در مورد کوارت این است که نه تنها شبیه به فلاسک نیست بلکه در واقع با API Flask سازگار است! نویسنده این چارچوب می خواست احساس Flask را حفظ کند و فقط async ، WebSockets و HTTP 2 را به آن اضافه کند. در نتیجه ، شما می توانید کوارت را درست از مستندات Flask یاد بگیرید ، فقط به خاطر داشته باشید که توابع Quart غیر همزمان هستند..

از کوارت واردات کوارت

برنامه = کوارتت (__ name__)

@ app.route (‘/’)
async def سلام ():
بازگشت “سلام”

app.run ()

احساس می کنید (تقریبا) دقیقاً مانند فلاسک ، اینگونه نیست?!

از آنجا که کوارت تکامل فلاسک است ، تمام ویژگی های داخل فلاسک در دسترس هستند: مسیریابی ، میان افزار ، جلسات ، قالب بندی ، طرح ها و غیره. در حقیقت ، حتی می توانید از افزونه های Flask مستقیماً در داخل کوارتت نیز استفاده کنید. نکته جالب این است که پایتون 3.7+ فقط پشتیبانی می شود ، اما اگر آخرین نسخه پایتون را اجرا نکنید ، ممکن است async مسیر درستی نباشد. ��

اگر تجربه قبلی با Flask را نداشته باشید ، مستندات واقعا می خواهد ، اما من می توانم کوارت را توصیه کنم زیرا احتمالاً تنها چارچوب پیوند نزدیک به نسخه 1.0 آن است که به زودی نزدیک است.

FastAPI

آخرین (اما چشمگیرترین) چارچوب موجود در این لیست است FastAPI. نه ، این فقط یک چارچوب API نیست. در واقع ، FastAPI به نظر می رسد چارچوب غنی ترین و غنی از اسناد و مدارک است که من هنگام تحقیق در چارچوب های Pyyon پیوند.

جالب است که توجه داشته باشید كه نویسنده چارچوب چندین چارچوب دیگر را به طور عمیق مورد بررسی قرار داده است ، از جمله معاصر امروزی مانند Django گرفته تا موارد مدرن مانند Sanic ، و همچنین در جستجوی فن آوری به NestJS (یک چارچوب وب Node.js ، typescript). فلسفه توسعه آنها و مقایسه های گسترده را می توان مطالعه کرد اینجا.

نحو کاملاً دلپذیر است. حتی می توان ادعا کرد که این بسیار لذت بخش تر از چارچوب های دیگری است که ما به آن رسیده ایم:

رام fastapi واردات FastAPI

برنامه = FastAPI ()

@ app.get ("/ کاربران / من")
async def read_user_me ():
برگشت {"شناسه کاربری": "کاربر فعلی"}

@ app.get ("/ کاربران / {user_id")
async def read_user (user_id: str):
برگشت {"شناسه کاربری": شناسه کاربری}

و اکنون ، لیست ویژگی های قاتل که باعث می شود FastAPI از چارچوب های دیگر پیشی بگیرد:

تولید اسناد خودکار API: به محض اینکه نقاط پایانی شما نوشته شد ، می توانید با استفاده از یک رابط کاربری استاندارد سازگار با استاندارد ، با API بازی کنید. SwaggerUI ، ReDoc و دیگران پشتیبانی می شوند.

این چارچوب همچنین اسناد مدل داده های خودکار را با طرح JSON Schema انجام می دهد.

توسعه مدرن: بله ، کلمه “مدرن” بسیار به دور می شود ، اما من فهمیدم FastAPI در واقع برای پیاده کردن صحبت هایش است. تزریق وابستگی و تذکر نوع ، شهروندان درجه یک هستند ، نه تنها اصول کدگذاری خوب را در پیش می گیرند بلکه در دراز مدت مانع از بروز اشکالات و سردرگمی ها می شوند..

مستندات گسترده: من در مورد شما نمی دانم ، اما من مکنده کاملاً مستندات خوبی هستم. و در این زمینه ، FastAPI دست به دست هم می دهد. این صفحه در صفحات اسناد وجود دارد که تقریباً هر ظرافت کمی را توضیح می دهد و “مراقب باشید!” لحظاتی برای توسعه دهندگان در تمام سطوح. من یک “قلب و روح” واضح را در اسناد اینجا احساس می کنم ، و تنها مقایسه ای که می توانم پیدا کنم اسناد جنگو (بله ، اسناد FastAPI خیلی خوب هستند!).

فراتر از اصول اولیه: FastAPI علاوه بر داشتن همه یاران سنتی مانند CORS ، جلسات ، کوکی ها و موارد دیگر از پشتیبانی از WebSockets ، Streaming و همچنین GraphQL نیز پشتیبانی می کند..

و در مورد عملکرد چطور؟ خوب ، FastAPI در کتابخانه شگفت انگیز Starlette ساخته شده است ، در نتیجه عملکردی مطابق با نود است ، و در بعضی موارد ، حتی Go! در کل ، من واقعاً این احساس را دارم که FastAPI قصد دارد به عنوان اولین چارچوب برتر برای پایتون به رقابت بپردازد..

نتیجه

این روزها اتفاقات زیادی در چشم انداز پایتون async در جریان است. چارچوب های جدید در حال ظهور هستند ، نمونه های قدیمی بازنویسی می شوند ، و کتابخانه ها برای مطابقت با رفتار async تکامل می یابند. در حالی که پایتون برای حلقه رویداد از پشتیبانی داخلی استفاده کرده است و امکان دارد قسمتهایی از برنامه خود را async کنید ، می توانید همه جا را انتخاب کنید و در یکی از چارچوبهای اینجا بسازید. فقط مطمئن باشید که طولانی مدت را در خاطر داشته باشید: چندین فریم ورک Python async در آنجا در مراحل اولیه قرار دارند و به سرعت در حال تکامل هستند که این روند به روند توسعه شما آسیب می رساند و هزینه های تجاری را نیز بالا می برد. احتیاط مهم است!

اما همه گفتند و انجام دادند؛ پایتون در هنگام تولید چارچوبهای وب آماده تولید نور است. اگر تا مدت ها فکر می کردید به نود مهاجرت کنید ، دیگر نیازی به این نیست! ��

عالی به نظر می رسد? امروز استاد پایتون!

برچسب ها:

  • پایتون

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map