Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Sub inițiativa Agenției Statelor Unite pentru Dezvoltare Internațională ( USAID - US Agency for International Development ) și Asociația Națională a Comisiilor de Reglementare a Utilităților Publice din SUA ( National Association of Regulatory Utility Commissioners, NARUC), în Skopje, Macedonia de Nord se desfășoară cea de-a doua ediție a programului de formare în leadership pentru femeile aflate la mijlocul carierei Advancing Women Leaders in Energy.
Pentru detalii accesați următorul link: https://t.ly/I01Mp
#EnergyRegulation#genderequality#careerdevelopment#leadership
🌊🐠 Veterinary Students & New Graduates — Ready to Dive into Aquatic Medicine?
The John L. Pitts Aquatic Veterinary Education Scholarship was created to honor reminded Dr. John L. Pitts’ lifelong dedication to advancing aquatic veterinary medicine and mentoring young professionals. Since 2010, this program has helped students and recent graduates explore meaningful careers in aquatic animal health.
Each year, selected applicants receive financial support to attend conferences, participate in externships, present research, or carry out small aquatic veterinary projects. It’s more than funding — it’s a doorway into a growing and impactful field.
If you’re passionate about fish health, aquaculture, marine species, or aquatic welfare, this is your opportunity to take the next step. Applications open in January and close March 31.
Your future in aquatic veterinary medicine could start here. 🌊✨
Link: https://www.wavma.org/scholarships
#VeterinaryMedicine
#AquaticVeterinary
#VetStudents
#ScholarshipOpportunity
#CareerDevelopment
For more scholarships, internships and different Veterinary related opportunities, visit:
@vet_opportunities
@vet_opportunities
@vet_opportunities