Forwarded from Ninja Learn | نینجا لرن (Denver)
خب خب خب، Background Task ها توی FastAPI🚀
گاهی اوقات نیاز داریم که یه کاری بعد از ارسال پاسخ به کاربر انجام بشه. مثل ارسال ایمیل خوشامد گویی، ثبت لاگ یا آمار توی دیتابیس، پردازش فایل آپلود شده و .... توی این شرایط میتونیم از Background Task ها استفاده کنیم، اینجوری میتونیم بدون معطل کردن کاربر اون کارهارو جداگانه انجام بدیم.
استفاده از Background Task ها🛠
خب اول باید کلاس
حالا FastAPI میاد یه آبجکت با نوع
بعد از اینکه فانکشن تسکمون رو ایجاد کردیم میتونیم با استفاده از متود
Background Tasks و Dependency injection💉
Background Tasks به خوبی با سیستم تزریق وابستگی FastAPI سازگاره. میتونیم توی سطح های مختلف برنامه(فانکشن route، یه وابستگی و...) از Background Task استفاده کنیم.
توی این مثال بعد از اینکه پاسخ به کلاینت ارسال شد، یه تسک میاد ایمیل کاربر رو توی فایل
نکته مهم⚠️
این ابزار فقط برای کارهای سبک وسریع مناسبه. مثل همین لاگ نوشتن، ارسال ایمیل یا پردازش های خیلی کوچیک و سبک. برای کارهای سنگین تر مثل پردازش تصویر بهتره که از سیستم هایی مثل Celery استفاده بشه.
جمع بندی✍️
Background Task یه ابزار ساده ولی کاربردیه. میتونه توی پروژه هایی که تسک های سنگینی ندارن از Celery بی نیازتون کنه و کارهارو بعد از پاسخ دهی به صورت غیرهمزمان انجام بده.
➖➖➖➖➖➖➖➖➖➖
گاهی اوقات نیاز داریم که یه کاری بعد از ارسال پاسخ به کاربر انجام بشه. مثل ارسال ایمیل خوشامد گویی، ثبت لاگ یا آمار توی دیتابیس، پردازش فایل آپلود شده و .... توی این شرایط میتونیم از Background Task ها استفاده کنیم، اینجوری میتونیم بدون معطل کردن کاربر اون کارهارو جداگانه انجام بدیم.
استفاده از Background Task ها🛠
خب اول باید کلاس
BackgroundTasks رو ایمپورت کنیم و یه پارامتر از همین نوع برای فانکشن route بنویسیم.from fastapi import BackgroundTasks, FastAPI
app = FastAPI()
def write_notification(email: str, message=""):
with open("log.txt", mode="w") as email_file:
content = f"notification for {email}: {message}"
email_file.write(content)
@app.post("/send-notification/{email}")
async def send_notification(email: str, background_tasks: BackgroundTasks):
background_tasks.add_task(write_notification, email, message="some notification")
return {"message": "Notification sent in the background"}
حالا FastAPI میاد یه آبجکت با نوع
BackgroundTasks برامون ایجاد میکنه و به اون پارامتر پاس میده.بعد از اینکه فانکشن تسکمون رو ایجاد کردیم میتونیم با استفاده از متود
()add_task از همون پارامتر اون فانکشن رو به صف اجرا اضافه کنیم. همچنین میتونیم آرگومان های مورد نیازمون رو هم با استفاده از همین متود به تسکمون پاس بدیم.Background Tasks و Dependency injection💉
Background Tasks به خوبی با سیستم تزریق وابستگی FastAPI سازگاره. میتونیم توی سطح های مختلف برنامه(فانکشن route، یه وابستگی و...) از Background Task استفاده کنیم.
from typing import Annotated
from fastapi import BackgroundTasks, Depends, FastAPI
app = FastAPI()
def write_log(message: str):
with open("log.txt", mode="a") as log:
log.write(message)
def get_query(background_tasks: BackgroundTasks, q: str | None = None):
if q:
message = f"found query: {q}\n"
background_tasks.add_task(write_log, message)
return q
@app.post("/send-notification/{email}")
async def send_notification(
email: str, background_tasks: BackgroundTasks, q: Annotated[str, Depends(get_query)]
):
message = f"message to {email}\n"
background_tasks.add_task(write_log, message)
return {"message": "Message sent"}
توی این مثال بعد از اینکه پاسخ به کلاینت ارسال شد، یه تسک میاد ایمیل کاربر رو توی فایل
log.txt مینویسه. اگه یه کوئری پارامتر هم به API ارسال بشه یه تسک دیگه اون رو هم توی فایل مینویسه.نکته مهم⚠️
این ابزار فقط برای کارهای سبک وسریع مناسبه. مثل همین لاگ نوشتن، ارسال ایمیل یا پردازش های خیلی کوچیک و سبک. برای کارهای سنگین تر مثل پردازش تصویر بهتره که از سیستم هایی مثل Celery استفاده بشه.
جمع بندی✍️
Background Task یه ابزار ساده ولی کاربردیه. میتونه توی پروژه هایی که تسک های سنگینی ندارن از Celery بی نیازتون کنه و کارهارو بعد از پاسخ دهی به صورت غیرهمزمان انجام بده.
#️⃣ #fastapi #python #backend
➖➖➖➖➖➖➖➖➖➖
🥷🏻 CHANNEL | GROUP
Forwarded from شیرازلینوکس | shirazlinux
Media is too big
VIEW IN TELEGRAM
🎬 مبارزه برای تعمیر
🐧 انیمیشنی راجب حق تعمیر
دو مهندس نرمافزار آزاد تلاش میکنند یک مشکل خطرناک در کد خودران خودرو رو برطرف کنند، اما این تازه آغاز ماجراست!
آنها باید با شرکت انحصارطلب «دسیپتیکور» روبرو بشوند؛ جایی که نرمافزارهای بسته، کاربران رو کنترل میکنند.
این ویدیو بخشی از کمپین جدید FSF برای دفاع از حق تعمیره؛
اگرچه مقررات ایمنی برای وسایل نقلیه و دستگاههای خطرناک ضروری است، اما این نباید بهانهای برای سلب حق تعمیر از کاربران باشد !
شرکتها نباید به بهانهی ایمنی، کاربران رو از حق تعمیر محروم کنند — آزادی تعمیر فقط با نرمافزار آزاد ممکنه.
✊ حق تعمیر = آزادی کاربران
----------------------------
🌐 https://sudoshz.ir
🆔 Shirazlinux Channel
🗨 Shirazlinux Group
#نرمافزار_آزاد #آزادی_دیجیتال #FSF #libreplanet2025 #freesoftware
#حق_تعمیر
🐧 انیمیشنی راجب حق تعمیر
دو مهندس نرمافزار آزاد تلاش میکنند یک مشکل خطرناک در کد خودران خودرو رو برطرف کنند، اما این تازه آغاز ماجراست!
آنها باید با شرکت انحصارطلب «دسیپتیکور» روبرو بشوند؛ جایی که نرمافزارهای بسته، کاربران رو کنترل میکنند.
این ویدیو بخشی از کمپین جدید FSF برای دفاع از حق تعمیره؛
اگرچه مقررات ایمنی برای وسایل نقلیه و دستگاههای خطرناک ضروری است، اما این نباید بهانهای برای سلب حق تعمیر از کاربران باشد !
شرکتها نباید به بهانهی ایمنی، کاربران رو از حق تعمیر محروم کنند — آزادی تعمیر فقط با نرمافزار آزاد ممکنه.
✊ حق تعمیر = آزادی کاربران
----------------------------
🌐 https://sudoshz.ir
🆔 Shirazlinux Channel
🗨 Shirazlinux Group
#نرمافزار_آزاد #آزادی_دیجیتال #FSF #libreplanet2025 #freesoftware
#حق_تعمیر
Forwarded from Python Hints
داشتم تغییرات مربوط به
What's new in Python 3.14
یک مورد جالب دیدم
داستان چیه؟ قطعا شما هم توی کدهای جنگو یا
تا اینجا هیچ مشکلی وجود نداره و برای همین هم خیلیها نمیدونند که اینکار باعث مشکل میشه.
حالا فرض کنید توی اون
پس هیچوقت کد شما
توی این نسخه چیکار کردن ؟
اضافه کردند که اگر اینطوری کد زدید بهتون نشون بده که این مشکل وجود داره؛ ولی همچنان
خیلی هم عالی.
Pi Python یا همون Python 3.14 رو میخوندم (پروژههای خودم رو میخوام منتقل کنم روی این نسخه) از این لینک:What's new in Python 3.14
یک مورد جالب دیدم
Pep 765 که :Disallow return/break/continue that exit a finally block
داستان چیه؟ قطعا شما هم توی کدهای جنگو یا
fastapi دیدید وقتایی که یک نفر try/except رو استفاده کرده و ارورها رو لاگ میندازه و بعدش finally داره که یک return خاص انجام بده مثلا مقدار پیشفرض رو بفرسته.تا اینجا هیچ مشکلی وجود نداره و برای همین هم خیلیها نمیدونند که اینکار باعث مشکل میشه.
حالا فرض کنید توی اون
exception شما بجای نوشتن لاگ raise انجام میدید تا توی بخش دیگری از پروژه اون Exception رو بتونید بهتر هندل کنید؛ اما وقتی Finally رو دارید که توش Return هم انجام میشه؛ چیزی که کد شما میبینه بعنوان response مربوط به اون try/except بلاک هیچوقت نمیتونه raise باشه (همیشه finally آخر از همه اجرا میشه)پس هیچوقت کد شما
raise ایی که نوشتید رو نشون نخواهد داد.توی این نسخه چیکار کردن ؟
Syntax warning اضافه کردند که اگر اینطوری کد زدید بهتون نشون بده که این مشکل وجود داره؛ ولی همچنان
backward compatible بمونه.خیلی هم عالی.
Python documentation
What’s new in Python 3.14
Editors, Adam Turner and Hugo van Kemenade,. This article explains the new features in Python 3.14, compared to 3.13. Python 3.14 was released on 7 October 2025. For full details, see the changelog...
Forwarded from Laravel News
Track Metrics Effortlessly with Laravel's Context Increment and Decrement Methods https://laravel-news.com/context-increment-decrement
Laravel News
Track Metrics Effortlessly with Laravel's Context Increment and Decrement Methods - Laravel News
Laravel's Context system now includes increment and decrement methods for simple counter tracking. These methods streamline metric collection across application components, enabling clean monitoring of application events without complex state management code.
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱)
Forwarded from Linuxor ?
با کلاینت beekeeper studio میتونید دیتابیس های خودتون رو مدیریت کنید، اکثر دیتابیس هارو ساپورت میکنه توی ورژن های بعدی هم قراره Redis و Snowflake رو ساپورت کنه :
github.com/beekeeper-studio/beekeeper-studio
@Linuxor
github.com/beekeeper-studio/beekeeper-studio
@Linuxor
Forwarded from Linuxor ?
اومدن ویندوز 95 رو با الکترون ساختن !
الکترون یه فریمورک جاوااسکریپته که با HTML و CSS بهتون این اجازه رو میده اپلیکیشن های دسکتاپ بسازین VsCode دیسکورد، اسکایپ، نوشن و فیگما همگی با الکترون ساخته شدن
github.com/felixrieseberg/windows95
@Linuxor
الکترون یه فریمورک جاوااسکریپته که با HTML و CSS بهتون این اجازه رو میده اپلیکیشن های دسکتاپ بسازین VsCode دیسکورد، اسکایپ، نوشن و فیگما همگی با الکترون ساخته شدن
github.com/felixrieseberg/windows95
@Linuxor
Forwarded from Golden Code (علی 🇨🇴)
📌 لیستی از اصول مهم در طراحی سیستم که نیازه بدونیم!
1. مفهوم Caching :
میتونیم از کش برای ذخیره نتایج کوئریهای دیتابیس استفاده کنیم تا سرعت دسترسی به دادهها افزایش پیدا کنه و بار سرور کاهش یابد.
2. مفهوم Sharding:
تقسیم دادهها به بخشهای کوچکتر و ذخیره اونا در سرورهای مختلف. این کار باعث میشه که سیستم بتونه بهتر و سریعتر به درخواستها پاسخ بده.
3. مفهوم Load-balancing (توزیع بار):
وقتی تعداد request ها زیاد میشه، باید اونارو به طور مساوی بین چند سرور تقسیم کنیم تا از بار زیاد روی یک سرور جلوگیری بشه و سیستم کارایی بالاتری داشته باشه.
4. مفهوم Replication :
ایجاد کپی از دادهها در سرورهای مختلف تا در صورت بروز مشکل یا خرابی در یک سرور، سیستم همچنان فعال و در دسترس باشه.
5. مفهوم Fault-tolerance :
سیستم باید طوری طراحی بشه که در صورت بروز خطا یا مشکل، همچنان بتونه به کارش ادامه بده. مثلا در Laravel، میتونیم از ویژگیهایی نظیر retry برای انجام مجدد request ها درصورت بروز خطا استفاده کنیم.
6. مفهوم High-availability :
سیستم باید همیشه در دسترس باشه و هیچوقت از دسترس خارج نشه.
7. مفهوم Concurrency (همزمانی):
اجرای چندین کار به صورت همزمان برای افزایش سرعت پردازش.
مثلا در Laravel، میتونیم از Job Queues و Workers برای پردازش درخواست ها بصورت همزمان استفاده کنیم و ازین طریق عملکرد سیستم رو بهبود بدیم.
8. مفهوم Scalability :
توانایی سیستم برای گسترش و افزایش ظرفیت با افزایش تعداد کاربران.
9. مفهوم Performance :
سرعت و کارایی سیستم. در Laravel، میتونیم از تکنیکهایی مانند Caching و Eager Loading برای بهبود سرعت بارگذاری صفحات و کاهش زمان پاسخدهی استفاده کنیم.
10. مفهوم Indexing :
ایجاد ایندکسها در دیتابیس برای جستجو سریعتر دادهها. ایندکسها به سرعت جستجو رو افزایش میدهند و باعث میشن که نتایج سریعتر منتقل بشن.
@GoldenCodeir
(منبع 👇🏾)
https://x.com/javinpaul/status/1920364568041160939?s=19
1. مفهوم Caching :
میتونیم از کش برای ذخیره نتایج کوئریهای دیتابیس استفاده کنیم تا سرعت دسترسی به دادهها افزایش پیدا کنه و بار سرور کاهش یابد.
2. مفهوم Sharding:
تقسیم دادهها به بخشهای کوچکتر و ذخیره اونا در سرورهای مختلف. این کار باعث میشه که سیستم بتونه بهتر و سریعتر به درخواستها پاسخ بده.
3. مفهوم Load-balancing (توزیع بار):
وقتی تعداد request ها زیاد میشه، باید اونارو به طور مساوی بین چند سرور تقسیم کنیم تا از بار زیاد روی یک سرور جلوگیری بشه و سیستم کارایی بالاتری داشته باشه.
4. مفهوم Replication :
ایجاد کپی از دادهها در سرورهای مختلف تا در صورت بروز مشکل یا خرابی در یک سرور، سیستم همچنان فعال و در دسترس باشه.
5. مفهوم Fault-tolerance :
سیستم باید طوری طراحی بشه که در صورت بروز خطا یا مشکل، همچنان بتونه به کارش ادامه بده. مثلا در Laravel، میتونیم از ویژگیهایی نظیر retry برای انجام مجدد request ها درصورت بروز خطا استفاده کنیم.
6. مفهوم High-availability :
سیستم باید همیشه در دسترس باشه و هیچوقت از دسترس خارج نشه.
7. مفهوم Concurrency (همزمانی):
اجرای چندین کار به صورت همزمان برای افزایش سرعت پردازش.
مثلا در Laravel، میتونیم از Job Queues و Workers برای پردازش درخواست ها بصورت همزمان استفاده کنیم و ازین طریق عملکرد سیستم رو بهبود بدیم.
8. مفهوم Scalability :
توانایی سیستم برای گسترش و افزایش ظرفیت با افزایش تعداد کاربران.
9. مفهوم Performance :
سرعت و کارایی سیستم. در Laravel، میتونیم از تکنیکهایی مانند Caching و Eager Loading برای بهبود سرعت بارگذاری صفحات و کاهش زمان پاسخدهی استفاده کنیم.
10. مفهوم Indexing :
ایجاد ایندکسها در دیتابیس برای جستجو سریعتر دادهها. ایندکسها به سرعت جستجو رو افزایش میدهند و باعث میشن که نتایج سریعتر منتقل بشن.
@GoldenCodeir
(منبع 👇🏾)
https://x.com/javinpaul/status/1920364568041160939?s=19
X (formerly Twitter)
javinpaul (@javinpaul) on X
10 Best System Design Topics Developers Should Learn in 2025
1. Caching
2. Sharding
3. load-balancing
4. replication
5. fault-tolerance
6. high-availability
7. Concurrency
8. scalability
9. Performance
10. Indexing
learn more on DesignGuru - https://t.co/VuZLWnBFWY
1. Caching
2. Sharding
3. load-balancing
4. replication
5. fault-tolerance
6. high-availability
7. Concurrency
8. scalability
9. Performance
10. Indexing
learn more on DesignGuru - https://t.co/VuZLWnBFWY
Forwarded from Geek Alerts
This media is not supported in your browser
VIEW IN TELEGRAM
هوآوی از سیستم عامل کامپیوتر اختصاصی خودش به اسم هارمونی او اس پی سی (یا هانگمنگ کامپیوتر تو چین) رونمایی کرد، این سیستم عامل بر پایه هارمونی او اس ساخته شده، ظاهرش شبیه مک او اس اپل هست و قراره ۱۹ می (حدودا ۲۹ اردیبهشت) عرضه بشه. میگن به صورت ویژهای با هوشمصنوعی یکپارچه شده.
gsmarena
@geekalerts
gsmarena
@geekalerts
Forwarded from Linuxor ?
Forwarded from کدنویس یکروزه
ابزار انسانی ساز متون
AI Humanizer
یعنی چی!؟ یعنی اینکه یه سری سایت بودن که به اساتید کمک میکردن که مقاله های دانشجوها رو باهاش چک کنن، یه وقت با هوش مصنوعی نوشته نشده باشه!
حالا اما،
با این ابزار مقاله های هوش مصنوعی رو جوری تغییر بدین که دیگه تمام اون سایت ها تشخیص ندن که یه ماشین متن رو نوشته!
بله .. واقعاً که .. 😳😃
https://youtu.be/YRdGoihEZrI?si=RRtZ5r12mtz1oDrA
AI Humanizer
یعنی چی!؟ یعنی اینکه یه سری سایت بودن که به اساتید کمک میکردن که مقاله های دانشجوها رو باهاش چک کنن، یه وقت با هوش مصنوعی نوشته نشده باشه!
حالا اما،
با این ابزار مقاله های هوش مصنوعی رو جوری تغییر بدین که دیگه تمام اون سایت ها تشخیص ندن که یه ماشین متن رو نوشته!
بله .. واقعاً که .. 😳😃
https://youtu.be/YRdGoihEZrI?si=RRtZ5r12mtz1oDrA
YouTube
محتوای تولید شده توسط هوش مصنوعی شناسایی میشه! چگونه محتوا را انسانی کنیم| AIHumanizer ai
Try AIHumanizer ai for free here → https://cutt.ly/QrgwPBsf
آیا میخواهید متنهای خود را به محتوایی منحصر به فرد و شبیه به انسان تبدیل کنید که تشخیص آن دشوار باشد؟ 🤯✨ در این ویدیو، به شما نشان خواهیم داد که چگونه AIHumanizer ai میتواند به راحتی ابزارهای…
آیا میخواهید متنهای خود را به محتوایی منحصر به فرد و شبیه به انسان تبدیل کنید که تشخیص آن دشوار باشد؟ 🤯✨ در این ویدیو، به شما نشان خواهیم داد که چگونه AIHumanizer ai میتواند به راحتی ابزارهای…
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱)
This media is not supported in your browser
VIEW IN TELEGRAM
🔶 هواوی سیستم عامل اختصاصی HarmonyOS سازگار با هوش مصنوعی برای کامپیوتر و لب تاپ رونمایی کرد.
#خبر
@TheRaymondDev
#خبر
@TheRaymondDev
Forwarded from Linuxor ?
میدونستین ادیتور وی اس کد بر پایه ادیتور monaco ساخته شده ؟ monaco یه ادیتور وبه برای ویرایش کردن کد و قسمت عجیب اینجاست هنوز ورژن 1 هم نداده بیرون و ورژن 0 هستش !
microsoft.github.io/monaco-editor
@Linuxor
microsoft.github.io/monaco-editor
@Linuxor
Forwarded from Geek Alerts
بلوتوث ۶.۱ معرفی شد
نسخه ۶.۱ یه قابلیت جدید به اسم Randomized Resolvable Private Address (RPA) داره، این ویژگی ردیابی دستگاههای بلوتوثی رو سختتر میکنه چون زمانبندی تغییر آدرسشون کاملا تصادفیه. این کار به افزایش حریم خصوصی و عمر باتری لوازم جانبی کمک میکنه چون تغییر آدرس به دستگاه اصلی منتقل میشه.
bluetooth
@geekalerts
نسخه ۶.۱ یه قابلیت جدید به اسم Randomized Resolvable Private Address (RPA) داره، این ویژگی ردیابی دستگاههای بلوتوثی رو سختتر میکنه چون زمانبندی تغییر آدرسشون کاملا تصادفیه. این کار به افزایش حریم خصوصی و عمر باتری لوازم جانبی کمک میکنه چون تغییر آدرس به دستگاه اصلی منتقل میشه.
bluetooth
@geekalerts