Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
По следам экспедиции...
На джайлоо Сон-Кол в конце сентября уже холодно.
Скотоводы спешно снимают свой лагерь, пакуют вещи, вывозят скот. К этой слаженной работе присоединяется и наш экспедиционный отряд, помогая собрать две юрты.
Увидев меня, курсирующего по стойбищу в колпаке, хозяин спросил: "Ты - кыргыз?"
Я ответил, что нет, что я из России. Он тогда уточнил, откуда я? Говорю, что я из Барнаула, это Алтайский край.
В этот момент глаза пастуха наполнились особым вдохновением. Он радостно заключил: тогда ты точно кыргыз!
Почему, удивился я?
Байке пояснил: Алтай и Кыргызстан - это одно и тоже. И здесь и там живет один народ - кыргызы!
В этот момент в словах пастуха открылся один из эпизодов устной этноисторической памяти кыргызов - четкое представление о том, что Алтай когда-то, являлся их домом, одной из прародин!
#этнография#этнология#антропология#ethnology#ethnography#anthropology#ethnologie#ethnographic#ethnographie
По следам экспедиции...
Зачастую традиционная культура открывает свои тайны только через ее глубоких знатоков. Можно общаться с десятком собеседников, и не узнать ничего. А можно встретить одного аксакала, который, как неиссякаемый колодец утолит жажду всех твоих знаний...
В селе Кара-Суу Кочкорского района Нарынской области таким нашим собеседником стал Мамбет Садык уулу. Он - табып - лекарь, знахарь, врачеватель многих болезней.
Отвечая по-кыргызски на мои вопросы о целительных свойствах коровьего молока, которым лечили маленьких детей, он вдруг по-русски спросил меня: "Ну, а сам ты как? Как звать тебя? Семья есть, дети есть?"
Есть - отвечаю я. Он снова перешел на кыргызский: "Чакши, чакши!" Хорошо, мол, рад за тебя.
А потом он провел нас до ближайшего арыка, на берегах которого растут лечебные травы. Без этих растений, как и без молитвы, многие болезни не вылечить....
#этнография#этнология#антропология#ethnology#ethnography#anthropology#ethnographic#ethnographie#кыргызстан#кыргызы
Подводим итоги международной этнографической экспедиции "Большой Алтай" в Кыргызстане.
✍работали с 18 по 28 сентября
✍районы работ : Иссык-Кульская и Нарынская области
✍посетили 10 населенных пунктов
✍прошли маршрут в 2000 км
✍участвовали 20 этнографов из 12 вузов и научных учреждений Кыргызстана и России
✍собранные материалы послужат основой коллективной монографии.
#этнография#этнология#антропология#ethnology#ethnography#anthropology#ethnologie#ethnographic#ethnographie#кыргызстан#кыргызы#большойалтай#bolshoyaltay#этнографическаяэкспедиция#путешествия