Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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 quasar 3C 273, located in the constellation Virgo about 2.4 billion light-years from Earth, was the first quasar ever identified and remains one of the brightest in the sky. A quasar is a super-energetic beacon powered by a supermassive black hole devouring matter, shining so brightly that it can outshine entire galaxies, and 3C 273 helped scientists understand just how extreme and distant these cosmic engines can be. ✨
#quasars⚡#astronomy⚡#virgo⚡#nasa⚡#galaxy⚡#stars⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🪐 The distance from Earth to the Virgo Cluster, a giant grouping of galaxies, is about 55 million light-years—meaning the light we see from its member galaxies, like Messier 87, began its journey long before the first dinosaurs appeared on our planet. Even within the Virgo Cluster, galaxies can be separated by hundreds of thousands of light-years, showing that cosmic neighborhoods are staggeringly vast compared to our entire solar system. ✨
#spacedistances⚡#galaxies⚡#virgo⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
🪐 Far out in the Virgo Cluster, astronomers observed a rare cosmic event called an "ultra-compact dwarf galaxy collision," where two tiny, densely packed galaxies like M60-UCD1 have smashed together. The aftermath of such a collision can create ultrabright X-ray sources and disrupt the structure of both galaxies, showing that even small galaxies can undergo dramatic and strange transformations when they collide in deep space. ✨
#cosmicphenomena⚡#collisions⚡#virgo⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
La manera de hacer enojar a cada signo😤:
#Aries♈️: Ignorandolo.
#Tauro♉️: Pedirle más de lo que puede hacer.
#Geminis♊️: Presionarlo a hacer algo que no quiere hacer.
#Cancer♋️: Obligale a admitir que está equivocado.
#Leo♌️: Niego sus palabras.
#Virgo♍️: Que le lleven la contraria en lo que sea.
#Libra♎️: Excluyendole de tus planes.
#Escorpio♏️: Cometiendo errores absurdos.
#Sagitario♐️: Cancelando un plan a última hora.
#Capricornio♑️: Dile cómo tiene que hacer las cosas.
#Acuario♒️: Cortale las alas.
#Piscis♓️: No le des las gracias nunca.
@EsTuHoroscopo.🔮
Lo que a los signos mas les gusta de su pareja🥰:
#Aries♈️: Que le dejé ponerse sus sudaderas.
#Tauro♉️: Que le haga una playlist.
#Geminis♊️: Que le dejé hablar de sus pasiones.
#Cancer♋️: Que hable de sus sentimientos sin timidez.
#Leo♌️: Que le diga que es el/la más guapx.
#Virgo♍️: Que siga hablándole aunque desaparezca durante días.
#Libra♎️: Que tengan el mismo gusto musical que él/ella.
#Escorpio♏️: Que se pueda hablar de cualquier cosa con su pareja.
#Sagitario♐️: Que se ría de cualquier meme que le enseñe.
#Capricornio♑️: Que vea cualquier serie con él/ella.
#Acuario♒️: Que entienda que necesita su espacio.
#Piscis♓️: Que recuerde cualquier pequeño detalle.
@EsTuHoroscopo.🔮