Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
«…Конечно, танец - это магия. Но не та сказочная магия, овладеть которой обычно мечтают люди.
<….> Подлинная магия, органичной частью которой является танец, - это умение забыть о себе и чутко прислушиваться к желаниям реальности. Помогать их осуществлению, когда это в твоих силах. И не
мешать во всех остальных случаях..»
~ Сказки старого Вильнюса II
#МаксФрай
Тем временем… занятие №7
Впереди много работы над собой, над ножками 😅 и, конечно, над внутренним волнением о предстоящем событии 🫶🏻
Спасибо Кириллу @kirillparshakovtango за то, как он передает знания и любовь к каждому движению, направляет и помогает ближе узнать душу и сердце аргентинского танго 🪐
#tangoargentino#tango
В сентябре две недели подряд в субботу мы ходили на милонги с нашими учениками и друзьями! Огромное спасибо за приглашение организаторам! Было очень здорово ❤️
-
Самое важное на милонге после музыки - это СТОЛ. Стол, который забронирован за вами. Люди, которые сидят вместе за одним столом - это важно. Стол - это один клан, одна команда, одна семья, близкий круг.
Если вы идете на милонгу - вам нужен стол!
-
Наш стол почти в полном составе на этой фото❤️
-
Классный вечер, друзья!❤️ Любим вас,
Макс и Кати
#танго#тангоекб#tango#tangoargentino❤️
«Как мало тех, с кем хочется мечтать!
Смотреть, как облака роятся в небе,
Писать слова любви на первом снеге,
И думать лишь об этом человеке…
И счастья большего не знать и не желать…»
Любимые и такие точные строчки из произведения Эдуарда Асадова… 🤍
@kirillparshakovtango
И вновь слились воедино музыка, движение, слово … и случилась абсолютная магия … 🔮
Наш с @rosti_kh аудиоальбом «Я могу тебя очень ждать», кстати, доступен на всех цифровых площадках 🫶🏼
#любовь#нежность#чувства#танго#аргентинскоетанго#tangoargentino#стихи#поэзия#Асадов