Python BackendHub – Telegram
Python BackendHub
7.51K subscribers
314 photos
46 videos
11 files
432 links
Learning python & Backend Engineering, with Mani!

Youtube: https://www.youtube.com/@GitOverHere
Github: https://github.com/ManiMozaffar
Linkedin: https://www.linkedin.com/in/manimozaffar

تبلیغات نداریم

Admin: @Mani_nikou
Download Telegram
یک فکت:‌امروز ۶ میلیون نفر pydantic رو دانلود کردن!‌ pydantic تبدیل به یکی از پر استفاده ترین پکیج های پایتونی شده, و احتمال داره به جایی برسه در آینده نزدیک که به پر دانلود ترین پکیج پایتونی هم تبدیل شه!‌در حال حاضر معدود پکیج هایی فقط بالاتر از pydantic هستند مثل نام پای با ۹ میلیون دانلود روزانه. این در حالیه که فست فقط یک میلیون دانلود داشته. این آمار و ارقام نشون میده pydantic کامل وارد اکوسیستم پایتون شده و تو انواع پروژه ها استفاده میشه.

اگه هنوز pydantic رو شروع نکردین, اهل خوندن داک هم نیستن(!), ویدیو دکتر فرد رو بهتون توصیه میکنم:
https://www.udemy.com/course/pydantic/

دکتر فرد دوره پایتونی خیلی خوبی هم داره. deep dive into python. اگه میخواین بیشتر پایتون یاد بگیرین به شدت توصیه میشه:
https://www.udemy.com/user/fredbaptiste/

@PyBackendHub
👍144🔥2
این روزا ردیس خیلی شلوغ کرده احتمالا خونده باشین راجبش که لاینسس تغییر کرده
میخواستم بگم یک alternative داره که api اش کاملا با ردیس compatible هست و مدعیه که پرفومنس خیلی بهتری میده نسبت به ردیس. همچنین شرکت هایی مثل ubisoft و epic games هم ازش استفاده میکنن ظاهرا.

توصیه میکنم یک سری بزنید. خودم هنوز تستش نکردم. ولی احتمالا ردیسو با این تغییر بدم اگه تست کنم و ببینم هیچ ساید افکتی نداره.
https://www.dragonflydb.io/

@PyBackendHub
👍9
یک جمله به شدت حق 😂👌

I finally understand the rust people.
Its javascipt devs who got out of a toxic relationship and now they want to date the opposite person.


@PyBackendHub
😁23🤣16👍1
چند روز پیش ازم یک سوالی شد که جذاب بود برام:

شما requirement ای دارین که باید بدون استفاده از هیچ دپندسی خارجی جز پایتون, با یک وب سوکت async که در نظر بگیرین که کلاینت بهش وصل میشه, باید از یک لایبری sync یک دیتای زیادی رو دانلود کنید و به کلاینت وب سوکت هم باید آپدیت بدید که چند درصد دانلود انجام شده رو وب سوکت. فرض کنید اون لایبری sync ای که ازش دارین استفاده میکنید برای دانلود دیتا, یک hook داره که در واقع یک callable بهش میدین و اون صدا میزنه رو هر n درصد از دانلودی که پیش بره. یک همچین اینترفیسی:


def download_hook(info: DownloadInfo):
...
# notify your webhook client which is async


download_big_data(hook=download_hook, every_n_percent=10)


در واقع چالش این سوال اینه که کد sync و async با هم به طور real time تو یک پروسس حرف بزنن.
سوال اول:‌اینو چطور پیاده سازی میکنید؟
سوال دوم:‌ اگه requirement ای وجود نداشت برای دپندسی خارجی, از چه چیزی استفاده میکردین؟ و چرا؟

@PyBackendHub
🤔3👍1
Python BackendHub
چند روز پیش ازم یک سوالی شد که جذاب بود برام: شما requirement ای دارین که باید بدون استفاده از هیچ دپندسی خارجی جز پایتون, با یک وب سوکت async که در نظر بگیرین که کلاینت بهش وصل میشه, باید از یک لایبری sync یک دیتای زیادی رو دانلود کنید و به کلاینت وب سوکت…
خب نکته ای که این سوال اول داشت این بود که چطور حرف میزنن؟ بهترین جواب اینه که وب سوکتت وقتی کانشن باز میشه یک ترد دیگه باز میکنه، و یک queue میسازه برای خودش، و تو اون یکی ترد از کد sync اپدیت میگیره. داخل هوکش مسیج رو میذاره که بفرسته سمت queue. اماااا یک نکته ریز داره!

شما اگه از Queue خوده تردینگ استفاده کنید تو کد async ددلاک میشه کدتون، و همینطور اگه تو threading از لاک asyncio استفاده کنید بازم همین مشکل دارین. ضمن اینکه لاک asyncio ترد سیف نیست، و لاک تردینگ کوروتین سیف نیست.

این لایبری queue ای داره که هم asyncio aware هست و هم ترد سیفه!
https://github.com/aio-libs/janus


@PyBackendHub
👌4👍1😱1
Python BackendHub
چند روز پیش ازم یک سوالی شد که جذاب بود برام: شما requirement ای دارین که باید بدون استفاده از هیچ دپندسی خارجی جز پایتون, با یک وب سوکت async که در نظر بگیرین که کلاینت بهش وصل میشه, باید از یک لایبری sync یک دیتای زیادی رو دانلود کنید و به کلاینت وب سوکت…
نکته سوال دوم: scale این پروژه به شدت سخته. جایی که وب سوکت میاد به شدت سخت scale میشه چون state داره اپلیکیشن. شما فکر کنید ۱ میلیون کاربر یک دفعه به وب سوکتتون وصل میشن، حالا ۲ تا اپ جدید میذارین، کسی بهش وصل‌نمیشه! چون همه به اپ اول وصلن هنوز. ولی rest api اینطوری نیست چون state نداره. فکر کنید میخواین دیپلوی کنید، اگه وب سوکت رو بیارین پایین همه ۱ میلیون کاربر باهم قطع میشن. وقتی داره یک دانلود بزرگ رخ میده، احتمال اینکه مموری بچسبه به سقف هم خیلی زیاده!

پس هر جایی که اپتون state داره سعی کنید کمترین فشار روش باشه. کاره منطقی اینه که یک بروکر داشته باشین، و یک سرور دیگه وظیفش فقط دانلود باشه و اطلاع بده تو مسیج بروکر که چقدر انجام شده. دیگه اینطوری درگیر لاک و … نمیشین و کد async و sync خیلی راحت میتونن باهم حرف بزنن

@PyBackendHub
👍6
Forwarded from Python BackendHub
من چند وقت پیش یک آگهی ریموت تو شرکتی که تو برلین دارم توش کار میکنم گذاشتم.. چند نفر تماس گرفتن. وقتی صحبت از حقوق شد هیچ اطلاعی نداشتن که invoice چیه و چطوری میتونن قانونی کار کنند.

اگه میخواین ریموت کار کنید باید یک سری مراحلی رو طی کنید تا واجد شرایط باشین. اولین قدمش داشتن یک حساب بانکی و شماره مالیاته که بتونید یک شرکت یک جای دیگه دنیا رو به صورت قانونی invoice کنید!

این مقاله خیلی قشنگ توضیح داده دست نویسنده اش درد نکنه 🙂

@ManiFoldsPython
👍26
Python BackendHub
من چند وقت پیش یک آگهی ریموت تو شرکتی که تو برلین دارم توش کار میکنم گذاشتم.. چند نفر تماس گرفتن. وقتی صحبت از حقوق شد هیچ اطلاعی نداشتن که invoice چیه و چطوری میتونن قانونی کار کنند. اگه میخواین ریموت کار کنید باید یک سری مراحلی رو طی کنید تا واجد شرایط…
من یک چیزی اضافه کنم: تو مهاجرتتون خیلی تاثیر داره اگه بتونید اینکارو انجام بدید. چون وقتی شما میتونید یک شرکتی رو invoice کنید دیگه نیازی نیست نگران ویزا اسپانسرشیپ باشین. و برای شرکت کلی خرج ندارین تا onboard شید. نمونش اینه که فرض کنید من آفر گرفتم از یک شرکت استارت آپ. اون شرکت ممکنه توان اینو نداشته باشه که ۳ ماه منتظر بشه تا نیرو بهش اضافه شه و تو این مدت هم یک نفر براش اختصاصی بذاره که کارای ویزاشو انجام بده. و پکیج onboarding بده. نمیگم این غیرممکن هستا.. این دیفالته شرکت های بزرگه شکی نیست توش. ولی من بحثم اینه که میتونید شانس مهاجرتتون رو بیشتر کنید. وقتی شما ‍invoice میدین به یک شرکت -> میتونید از فردا روزی که قرارداد رو امضا کردین کار کنید. کنارشم هم کارای ویزاتون پیش میره و در نهایت جا به جا میشین. اگه هم دوست نداشتین مهاجرت کنید که میتونید تو ایران بمونید و درآمد دلاری داشته باشین.

@PyBackendHub
21👍6
دوستانی که از داخل ایران اپلای کردن و به من خبر ندادن, لطفا یا به من مراجعه کنند یا داخل توضیحات اضافه بنویسن که قابلیت invoice دادن رو دارند از داخل ایران. اگه اینکارو نکنید متاسفانه ریجکت میشید.
مقاله خیلی خوبیه که یاد میده چطور از git bisect استفاده کنید. یوزکیسش؟
برای دیباگ خیلی مفیده. فکر کنید شما یک باگی دارین که n تایم پیش نداشتین (مثلا چند ساعت مهم نیست). و میخواین ببینید کدوم کامیت باعث ایجادش شده. میتونید یک تست reproduce براش بنویسید. و بعد با استفاده از bisect سریع به اون کامیتی که باعثش شده بود برسید.

https://noaabarki.medium.com/git-bisect-and-debugging-is-easy-afdccf8ae0e8

@PyBackendHub
👍131
نسخه بعدی لایبری aioclock منتشر شد. 🚀

تو این نسخه شما میتونید مشخص کنید تسکتون چند بار ران شه. مثلا من میخوام تسکم هر ۵ ثانیه یک بار ران شه ولی کلا میخوام ۱۰۰۰ بار ران شه.



from aioclock import AioClock, Every

app = AioClock()

@app.task(trigger=Every(seconds=5, max_loop_count=1000)
async def some_task():
print("This would only run for 1,000 times!")



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

https://github.com/ManiMozaffar/aioclock


@PyBackendHub
🔥216
سلام خدمت دوستان. حدودا ۱ سال از تاسیس کانال میگذره. برای همین این پستو میذارم که پین بمونه تا سال دیگه😁

اولا که من هیچ تبلیغی انجام نمیدم. لطفا برای این موضوع مراجعه نکنید.
دوما چند تا از دوستان این هفته لطف داشتن از من بخوان که منتورشون بشم و هزینه بدن. من منتورشیپ انجام نمیدم چون متاسفانه وقتشو ندارم, ولی هم سایت رایگان هست برای اینکار و هم اینکه من تو گروه و داخل پی وی جواب میدم و کمکی از دستم بیاد حتما انجام میدم.
سوما بهتره سوالتون رو تو گروه بپرسید چون اونجا افراد بیشتری هستن و نظرات من ممکنه bias باشه و یا اشتباه باشه. ولی باز اگه به هر دلیلی نمیخواستین داخل گروه بپرسید داخل پیوی هم پاسخ میدم.

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

من مانی هستم. از سال ۲۰۲۰ برنامه نویسی رو به طور حرفه ای شروع کردم. قبلا پروداکت داشتم و به صورت تیمی روش کار میکردیم.البته الانم هستم ولی دیگه کاره تمام وقتم نیست. الان ۲ سالیه داخل یک استارت آپ آلمانی به عنوان مهندس نرم افزار کار میکنم و برلین زندگی میکنم. تجاربم بیشتر سمت بک اند, فرانت, تست نرم افزار (QA) و وب اسکرپ, و کمی آپریشن (ci/cd, observation, orchestration) هست. زبونی که باهاش کار میکنم پایتون و تایپ اسکریپت هست و در حال یادگیری rust هستم.

یوتیوب من:
https://www.youtube.com/@GitOverHere

لینکدین من:
https://www.linkedin.com/in/manimozaffar/

گیت هاب من:
https://github.com/manimozaffar


@PyBackendHub
46👍12👎1🙏1
Python BackendHub pinned «سلام خدمت دوستان. حدودا ۱ سال از تاسیس کانال میگذره. برای همین این پستو میذارم که پین بمونه تا سال دیگه😁 اولا که من هیچ تبلیغی انجام نمیدم. لطفا برای این موضوع مراجعه نکنید. دوما چند تا از دوستان این هفته لطف داشتن از من بخوان که منتورشون بشم و هزینه بدن.…»
این پست رو تو لینکدین دیدم. دوست دارم جوابتون رو بدونم. <چالش طراحی>
فرض کنید قراره سرویسی بنویسید که پلتفرم آنلاین رزرو و مدیریت کلاس درس باشه. حالا به این فکر کنید که یه کلاس درس از زمانی که خریداری میشه و در وضعیت «در انتظار برگزاری» قرار میگیره، باید بصورت خودکار وضعیت هاش توسط سیستم مدیریت بشه، مثلا وقتی کلاس خواست برگزار بشه بره در وضعیت «در حال برگزاری»، بعدش بشه «خاتمه یافته»، بعدش که کمیسیون استاد حساب شد بشه «تسویه شده» تصور کنید که ممکنه روی مقیاس بالا مثلا در ساعت اوج حدود ۵۰ هزار یا بیشتر کلاس برگزار بشه. تصور کنید کلاس ها به صورت آنلاین برگذار میشه. از چه ابزارها و معماری ای استفاده میکنید که پاسخگو نیاز بیزنس باشه؟

@PyBackendHub
🔥9👍51
Forwarded from Sadra Codes
نسخه 0.5 پای‌اکشن هم رلیز شد! 💫

پای‌اکشن یه ابزاره متن‌بازه که اجازه می‌ده با استفاده از پایتون، گیت‌هاب اکشن بسازید!

توی این رلیز کلی اتفاق افتاده. پروژه دیگه یه تمپلیت ساده نیس و تبدیل شده به یه پکیج پایتون. علاوه‌بر بهترشدن داکیومنت و ساختار، یه فیچر خیلی خفن هم اضافه شده که واقعا استفاده از GitHub Issues رو یه لول می‌بره بالاتر!

این فیچر این قابلیت رو به شما میده تا از Issue Form گیت‌هاب بعنوان ساید فرانت اپ های پایتونتون استفاده کنید! این فیچر الان قابل استفاده هست و توتوریالش هم توی داک‌ها قرارداده شده.

یک مثال که می‌تونید با پای‌اکشن پیاده کنید: فرض کنید که یک ریپو NLP دارید که برای Text Summaraization استفاده می‌شه و می‌خواید مردم این قابلیت رو داشته باشن که تستش کنن. به راحتی می‌تونید ساختاری رو طراحی کنید که هرشخص بتونه یک ایشو باز کنه و در ایشو، از ابزار شما استفاده کنه. (همه‌چیز اتوماتیک اتفاق میوفته)

💅 Issue Form feature: pyaction.imsadra.me/tutorial/#issueform

🟣 PyAction repo: github.com/lnxpy/pyaction
👍12💩1
یک چالش رو به رو شدم یکی از دیتابیس های پروداکشن ۳ ترابایت دیتا داخلش بود. گرچه کل row هاش رو هم ۱۰۰ گیگ هم نمیشد. و باعث میشد فضای سرور پر شه و دیتابیس بیاد پایین.

میدونستین وقتی یک row رو دیلیت میکنید فضا داخل دیتابیس PostgreSQL خالی نمیشه؟ بخوام درست تر بگم, فضا همچنان توسط تیبل reserve شده. برای همینه که میگن بهتره تو postgresql نیاین فایل byte بزرگی رو ذخیره کنید. البته تو کیس من دیتا بایت بزرگ نبود, صرفا دیتا زیاد بود. و دلیلش هم به خاطر مدل MVCC دیتابیس هست.

دو راهکار وجود داره برای اینکار. اولیش استفاده از VACUUM خوده دیتابیسه.😎 فکر کنید دوستتون زنگ بزنه بپرسه داری چیکار میکنی, بگی دارم جارو میکنم :))

دومیش استفاده از یک extension هست که شخصا تستش نکردم ولی جالب بود وقتی داشتم یک مقاله راجبش میخوندم.

@PyBackendHub
👍23🙏1