Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🌎 Leafcutter bees and flowering plants have a mutualistic relationship—bees gather pollen and nectar to feed their larvae, while plants get pollinated. Each bee can visit up to 100 flowers in a single foraging trip. ✨
#symbiosis⚡#animals⚡#pollination
👉subscribe Interesting Planet
👉more Channels
🌎 A single honeybee visits up to 5,000 flowers in one day, gathering nectar to make honey and pollinate plants—crucial for global food crops! ✨
#bees⚡#pollination⚡#nature
👉subscribe Interesting Planet
🌎 The flying fox bat of Southeast Asia boasts a wingspan up to 1.7 meters. Unlike most bats, it feeds mainly on fruit and nectar, playing a key role in pollinating trees that support tropical forests and countless wildlife. ✨
#flyingfox⚡#pollination⚡#rainforest
👉subscribe Interesting Planet
California trucks 1.5 million to 2.6 million bee hives each spring to pollinate almond farms. Pesticides and fungicides used on almonds hurt bees’ health and make it hard for them to find food. Bees also get stressed from long trips and losing their honey. These problems cause many bees to die or disappear. Almonds are pasteurized, which lowers their natural quality. Reducing almond farming could help protect bees and the environment by making almonds rarer. 🐝🌰🚛🌱
[Read more]
[Read more]
@googlefactss
#Bees#Almonds#Pollination#Pesticides#ColonyCollapseDisorder#SaveTheBees#Sustainability
Ну что, с коровами почти покончили, возьмёмся за пчёл:
Лабораторно выращенные медоносные пчелы, созданные лишь для того, чтобы быть рабами и умирать рано. Генеральный директор ForgeBee Адам Гамильтон говорит, что компания использует ИИ и робототехнику для выращивания партий одноразовых пчел, которые будут отправляться пчеловодам и фермерам. Он говорит: "Их поведение будет манипулироваться с помощью комбинации химических веществ, которые по сути заставят пчел чаще собирать пыльцу". Эти "единицы", как они их называют, будут иметь срок жизни от двух до трех недель, посвященных опылению сельскохозяйственных культур.
Кто-нибудь еще обеспокоен этим? А если эти измененные, лабораторно выращенные пчелы окажутся в дикой природе... что может пойти не так?
Читайте: https://www.brownfieldagnews.com/news/lab-grown-honeybees-could-be-future-of-food-production/
#LabGrownHoneybees#honeybees#bees#pollinators#pollination#beekeepers#food#health#healthy#holistic#holistichealth#gmofreecanada#gmofreeusa#toxinfreeusa
https://t.me/VseWeda/88080