Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
😄What
➖➖➖➖➖➖
🔘What can be used in questions to ask for information.
What time do you usually wake up?What time do you usually wake up?
🔘We can also use what in questions to show that we are surprised.
What?! You wake up at noon?What?! You wake up at noon?
🔘We can use what on its own to ask someone to say something again.
🔜I don't like chocolate. What? I don't really like chocolate.
🔘What can introduce an opinion.
🔜What a cute puppy!
#What👨🏫@America
➖➖➖➖➖➖➖➖➖➖➖➖
🆕 Crypto News @Money
😁 Crypto Game @Egame
🇺🇸 US News @America
🇯🇵 Japan News @Japan
🇦🇪 UAE News @Dubai
▶️ Popular Movies @Videos
😜 Best Funny Video @Funnys
*This world indeed is nothing, just last weekend we were enjoying with you in all occasions we attended.. You even promised to hung around with us till January only for you to leave us unannounced without even saying goodbye to me.. #What a great lost!! 😭😭*
*I love you but God loves you more.. #RIP My December Salary*
😭😭😭😭😭😭😭😭😭
@jokearoundtheglobe
Q-q起q名m风f波b- 起名风波 Le prénom (2012)
直达链接:https://pan.quark.cn/s/42406d845ae2
#起名风波#Le prénom
#名字#What's in a Name
链接:https://link3.cc/sf_com
#电影#喜剧#其他#10年代