Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🔤Углеводлар организмда ўзлаштирилишига қараб тез (содда молекулали) ва секин (мураккаб тузилишли) турларга бўлинади.
🧁Тез углеводлар, оддий углеводлар деб ҳам аталади, организмда жуда тез парчаланади ва тез сўрилади, қондаги қанд даражасини кескин оширади. Тез углеводларга мисоллар глюкоза, фруктоза, сахароза, малтоза ва лактозадир. Улар шакар, мураббо, асал, ширин мевалар (банан, узум, қовун), ширин ичимликлар ва турли пишириқларда кўп миқдорда учрайди (упаковкадаги кўп маҳсулотларда ҳам анчагина шакар бўлади).
🥦Мураккаб углеводлар деб ҳам аталадиган секин углеводлар секин сўрилади ва қондаги глюкоза даражасини аста-секин оширади. Секин углеводларга мисоллар клетчатка ва крахмал. Улар сабзавот, ширин бўлмаган мевалар, дуккаклилар, ёнғоқлар, уруғлар, бутун донли нон ва донларда кўп миқдорда сақланади.
🤒Кўп миқдорда тез углеводларни истеъмол қилиш қонда қанд ва инсулинни даражасини оширади, бу эса семириш, юрак касалликлари ва диабет ривожланиш хавфини ошириши мумкин. Шунинг учун ҳар хил турдаги углеводларни меёрида ва аралаш истеъмол қилишингиз керак.
🩺Doctor Ziyod | #nutrition#obesity
Latest Funding Rounds in AI and Tech
Recent funding highlights in AI and technology:
- Boon AI secured $15.50M on Dec 20, 2024. Learn more
- OpenLoop raised $15M on Dec 28, 2024. Learn more
- Emocog collected $14.98M on Dec 26, 2024, focusing on cognitive improvement digital therapeutics. Learn more
- Micro Optics raised $13.74M on Dec 13, 2024. Learn more
- Hengtuogao gathered $13.70M on Dec 30, 2024, specializing in integrated precision machinery. Learn more
- Tianhu Technology received $10M on Nov 15, 2024, as a leading AI protein design service in China. Learn more
- NitiNotes raised $9.30M on Dec 23, 2024, developing innovative treatments for obesity. Learn more
- WAJA secured $4.26M on Dec 31, 2024, focusing on regional economic development. Learn more
- Vetbiolix raised $4.23M on Dec 6, 2024, aiming at innovative pet health solutions. Learn more
- ChainOpera AI garnered $3.50M on Dec 26, 2024, working on blockchain solutions for decentralized AI apps. Learn more
These rounds highlight ongoing investment in AI, healthcare, pet care, and tech innovations.
#AI#Tech#Funding#Healthcare#Obesity#Decentralized#Blockchain#Innovation#CognitiveHealth#PetCare#Automation#ProteinDesign#DigitalTherapeutics#Economy#IndustrialSolutions#Hitech#Investment#Startup#VentureCapital#VC