Post

Balethon Is Fast

بلتون سریع است

بلتون برای افزایش سرعت اپلیکیشن شما از تکنولوژی هایی مثل asyncio و multi threading استفاده میکنه

asyncio

تکنولوژی asyncio به بلتون اجازه میده که ارسال درخواست به سرور بله اون رو کند نکنه

برای مثال این کد رو در نظر بگیرید

1
2
message = bot.send_message(1234567890, "...")
message.edit_text("Hello")

توی این کد ما یک پیام با متن ... به یک کاربر فرستادیم
بعد بلافاصله متن همون پیام رو به Hello ویرایش دادیم

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

حالا برای مثال فرض کنید هرکدوم از این درخواست های ما به بله حدود 1 ثانیه طول بکشه
یعنی این کد در کل 2 ثانیه طول میکشه
پس اینجا کد ما در مجموع 2 ثانیه کندتر میشه

اگر همین کد رو با asyncio بزنیم این شکلی میشه

1
2
message = await bot.send_message(1234567890, "...")
await message.edit_text("Hello")

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

حالا اگر دقت کرده باشید هنوز یک موردی هست
ما در انتظار برگشت پاسخ برای درخواست ارسال پیام میمونیم چون نیاز داریم که پاسخش رو بگیریم که ادامه کدمون رو اجرا کنیم
چون پاسخش یک پیامه که بعد میخوایم اون رو ویرایش کنیم
اما نیازی به انتظار به پاسخ درخواست ویرایش پیام نداریم
پس میتونیم در انتظار پاسخش نمونیم

روش انجام این کار با asyncio

1
2
3
4
5
6
7
8
from asyncio import create_task

message = await bot.send_message(1234567890, "...")
task = create_task(message.edit_text("Hello"))

...

await task

اینجا ما با استفاده از asyncio.create_task یک درخواست میزنیم و در انتظار پاسخش نمیمونیم و میریم ادامه کد رو اجرا میکنیم

یعنی کدی که در این مثال به جای ... قرار بدید بعد از 1 ثانیه اجرا میشه به جای 2 ثانیه
چون در انتظار پاسخ درخواست دوم نموندیم

فقط یادتون باشه که آخر کار await task رو قرار بدید وگرنه ممکنه کار تا آخر انجام نشه
اگر تابع تموم بشه و کار هنوز انجام نشده باشه دیگه ادامه پیدا نمیکنه

multi threading

تکنولوژی multi threading به بلتون اجازه میده که کارها رو همزمان انجام بده

هر کار در یک thread انجام میشه
در حالت عادی توانایی دستگاه شما بررسی میشه و با توجه به اون یک تعدادی از threadها ساخته میشن
و به همون تعداد کار همزمان میتونن انجام بشن
برای مثال فرض کنید که بلتون 8 تا thread برای شما ساخته باشه
یعنی اگر 8 نفر به بات شما پیام بدن بات همه رو همزمان جواب میده
اما اگه 10 نفر همزمان پیام بدن به 8 نفر جواب داده میشه و 2 نفر توی صف هستن تا 2 تا thread بیکار بشن تا برن جواب اون ها رو بدن

میتونید به این شکل تعداد threadها رو به دلخواه خودتون تغییر بدید

1
2
3
from balethon import Client

bot = Client("TOKEN",  max_workers=50)

در اینجا ما max_workers رو برابر با 50 قرار دادیم
یعنی بلتون 50 تا thread در اختیار داره و میتونه تا 50 کار همزمان انجام بده


پست بعدی: Balethon Is Flexible

This post is licensed under CC BY 4.0 by the author.