Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Other than firefighters and medics, the first people that went to help are local citizens everywhere from the city bringing food and their own supplies. However, to the #HKGov took all the credits. They called the cops to drive those volunteers away and the “Care Team” from the government takes pictures in front of those supplies that belongs to the volunteers. This is awfully disgusting.
#HongKongFire#宏福苑大火
Bamboo becomes the Scapegoat this time!
Everyone #HongKongers expected the #HKGov would find a scapegoat way before the fire was put out. What surprising was that this time it wasn’t a person, but the bamboo.
The “Mandatory Inspection Scheme” in Hong Kong, initiated by the government is the very reason that caused this tragedy.
To put it short:
1 - Government requires home owners to remake the buildings wall.
2 - Pro-Beijing & construction agencies infiltrated Home Owners Corporation.
3 - Hire construction companies with extremely high price.
4 - all materials and workers not meeting safety standards are purchased from China.
5 - $$ goes to China.
#HongKongFire#宏福苑大火
#英文#港聞
Several #HongKongers returned to Hong Kong from UK got arrested for getting their MPF (Mandatory Provident Fund).
This is just an excuse for the #HKGov to punish #HongKongers for immigrating to the UK. The #UKGov must take action!
🍎保留一點真相、一些堅持:
https://t.me/appledailyhk26
🍎蘋果報料熱線: @Appledailyhk_bot
🍎蘋民不蘋則鳴!2.0
https://t.me/hkerappledaily2