Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
from fastapi.concurrency import run_in_threadpool
async def execute(data: DataRequest) -> DataResponse:
try:
result = await run_in_threadpool(sync_function, data)
return DataResponse(data=result)
except Exception as e:
return DataResponse(
error=str(e),
success=False,
)
В общем работает нормально. Для всех вызовов под капотом используется общий тредпул, всё работает предсказуемо.
Но потребовалось изменить количество запускаемых в пуле потоков (по умолчанию создается 40 воркеров).
Так как дело происходит с FastAPI, делается это через lifespan используя настройки anyio:
import anyio
@asynccontextmanager
async def lifespan(app: FastAPI):
limiter = anyio.to_thread.current_default_thread_limiter()
limiter.total_tokens = 100
yield
# если вдруг нужно вернуть обратно
limiter.total_tokens = 40
Зачем менять количество воркеров?
- уменьшить, если оперативки мало (один тред занимает ~8мб)
- увеличить чтобы выдержать нагрузку
Если есть предложения получше при тех же вводных - предлагайте😉
#async
❎ Famous Characters (Caption) ❎
https://telegram.me/addstickers/famousCharactersCaption
#Famous#Characters#Caption#Unofficial
▶️ more Stickers at S4T.tv
#EvolutionX#UNOFFICIAL#A15#diting
EvolutionX 10.7 | UNOFFICIAL | Android 15
Updated: 29/6/2025
▪️Download: Gdrive | Mirror
▪️Screenshots
▪️Support
Changelogs:
• Sync last source
• Voip volume control problem fixed
• All new infinityx features have been added
• Optimized things for better performance
• Xiaomi camera Support
• Added Sony dolby
• KSU Support
WARNING
It is necessary to clean flash
Credits:Here
By@Jezzay97 | Donate
Follow@xiaomi_12tpro_updates
Join@xiaomi12tpro_chat
#EvolutionX#UNOFFICIAL#A15#diting
EvolutionX 10.7 | UNOFFICIAL | Android 15
Updated: 4/6/2025
▪️Download: Gdrive | Mirror
▪️Screenshots
Changelogs:
• June 2025 security patches have been merged into our Android 15 QPR2 branch. The latest version is now 10.7. As a reminder, all related Play integrity spoofing in the ROM have been removed already. All reports regarding certification failing will be ignored
• Switched to Yuki kernel oss
• kernel is now compiled with yuki clang 21 optimized by klozz
• Has the visual bug of negative battery percentage been fixed?
• The entire tree has been overrun. performance has been optimized and improved, such as micro lag.
• New thermal system
• Override doze mode support
• Remove wifilearner HIDL entry from manifest
• and other internal changes
• Add support for spatial audio
• Xiaomi camera Support
• Dolby audio by default
• KSU Support
CLEAN FLASH MANDATORY
Credits:Here
By@Jezzay97 | Donate
Follow@xiaomi_12tpro_updates
Join@xiaomi12tpro_chat
#EvolutionX#UNOFFICIAL#A15#diting
EvolutionX 10.6 | UNOFFICIAL | Android 15
Updated: 31/5/2025
▪️Download: Gdrive | Mirror
▪️Screenshots
▪️Support
Changelogs:
• Sync last source from evox
• sepolicy: Allow fingerprint hal to read system dmabuf device
• switch to common AIDL IR service
• HBM removed and display saturation
• And other minor changes
• Rebase Xiaomi Parts
• Xiaomi camera Support
• KSU Support
Credits:
@TeamMEX_XDA
@ArianK16a
@Omar99A
By@Jezzay97 | Donate
Follow@xiaomi_12tpro_updates
Join@xiaomi12tpro_chat