Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🌎 The Zone of Silence in northern Mexico baffles visitors—radios and compasses fail, and strange meteorites have fallen here. Scientists suspect unusual magnetic minerals and local geology disrupt signals, making this desert a hotspot for unexplained natural phenomena. ✨
#mystery⚡#geology⚡#magnetism
👉subscribe Interesting Planet
🌍 Earth has a layered structure: a thin crust, a solid mantle, a liquid outer core, and a solid inner core. The deep core’s movement creates the planet’s magnetic field, vital for life. ✨
#planet⚡#geology⚡#magnetism⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Earth’s outer core is made of liquid iron and nickel and creates the planet’s magnetic field. This powerful shield protects life by deflecting harmful cosmic and solar radiation. ✨
#planet⚡#geology⚡#magnetism⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 Auroras can ripple like curtains or spiral in arcs because solar particles follow Earth's magnetic field lines. Their shifting shapes reveal invisible patterns high above our polar regions. ✨
#aurora⚡#atmosphere⚡#magnetism⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Auroras glow when charged particles from the Sun hit Earth's magnetic field, making gases like oxygen and nitrogen light up green, red, and even rare purple or blue in the night sky. ✨
#aurora⚡#magnetism⚡#atmosphere⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌎 Hidden beneath Jupiter’s clouds, the planet’s metallic hydrogen layer creates an enormous magnetic field. This magnetic field is about 20,000 times stronger than Earth’s and traps intense radiation belts. ✨
#Jupiter⚡#planets⚡#magnetism
👉subscribe Interesting Planet
👉more Channels
🪐 Spanning more than 300 light-years, a vast radio structure known as the "Orion Spur Radio Arc" weaves through our segment of the Milky Way. Detected by the LOFAR radio telescope, this arc is composed of incredibly energetic electrons spiraling around magnetic fields, revealing a hidden backbone of cosmic magnetism threading through our stellar neighborhood. ✨
#MilkyWay⚡#magnetism⚡#radio
👉subscribe Universe Mysteries
🌎 The mysterious Whistler waves are very low-frequency radio signals generated by lightning. They travel along Earth's magnetic field lines and can be converted to eerie whooshing or whistling sounds when played back as audio. These signals were first recorded by radio operators during World War I. ✨
#lightning⚡#magnetism⚡#radio
👉subscribe Interesting Planet
🪐 In the constellation Lynx lives an unusual star known as HD 45166, which has an incredibly strong magnetic field—about 43,000 times greater than Earth’s. This rare "magnetized helium star" shrouds itself in a thick, fast-moving wind of gas, and its unique magnetic properties provide astronomers with a rare look at how intense magnetism can shape the life and appearance of stars. ✨
#unusualstars⚡#magnetism⚡#astronomy⚡#nasa⚡#galaxy⚡#stars⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
🌍 Earth’s core spins slightly faster than its surface, a phenomenon called “super-rotation.” This hidden motion helps maintain our magnetic field, vital for navigation and life. ✨
#planet⚡#core⚡#magnetism⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Earth's magnetic field acts like a protective shield, deflecting harmful solar wind and cosmic rays. This invisible force helps preserve our atmosphere and supports life on the planet. ✨
#magnetism⚡#protection⚡#atmosphere⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🪐 In the constellation Monoceros, the star HD 45166 is an unusually magnetic massive star with a surface magnetic field nearly 43,000 times stronger than Earth's. This extreme magnetism shapes the flow of gas around the star, producing powerful outflows and making HD 45166 a rare laboratory for studying the effects of magnetism on stellar evolution. ✨
#stars⚡#magnetism⚡#Monoceros⚡#nasa⚡#galaxy⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries