Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🚢Boluda вводит в эксплуатацию новый буксир на Темзе.
Компания Boluda Towage UK ввела в эксплуатацию новый буксир "VB Boluman", предназначенный для портовых и эскортных операций на реке Темза.
Судно с буксирным усилием 80 т, оснащено азимутальными движителями Kongsberg и двигателями Caterpillar, что обеспечивает высокую манёвренность и эффективность работы в сложных приливных условиях.
С операционной точки зрения, новый буксир повышает безопасность и пропускную способность порта, включая возможность участия в аварийно-спасательных операциях благодаря системе пожаротушения FiFi1.
Для рынка это подтверждает продолжающееся обновление портового флота с акцентом на экологические стандарты и высокую производительность.
📌Boluda Towage — часть испанской группы Boluda Corporación Marítima, основанной в 1837 году; частная компания, контролируемая семьёй Boluda.
#Shipping#Tugs#Ports#UK#Towage
🚢Tug Network Team расширяется в Европе через Fairplay Towage.
Международный альянс буксирных операторов Tug Network Team (TNT) объявил о расширении в Европе благодаря присоединению гамбургской компании Fairplay Towage.
После присоединения Fairplay сеть TNT охватывает 113 портов в 13 странах и объединяет флот состоящий из более чем 200 буксиров.
Альянс, изначально созданный в 2024 году компаниями Group Ocean, Sulnorte и CPT Towage, был ориентирован на рынок Америк и теперь получает полноценное присутствие в Европе.
Fairplay Towage работает в 24-х европейских портах, включая Германию, страны Балтии, Польшу, Нидерланды и Бельгию, и располагает флотом более 100 современных буксиров**.
Участие компании усиливает сеть независимых буксирных операторов и расширяет доступ судовладельцев к буксирным услугам в ключевых портовых регионах.
Для портовой отрасли расширение TNT отражает тенденцию к консолидации и созданию глобальных сетей независимых операторов, способных конкурировать с крупными международными буксирными группами.
📌Fairplay Towage Group — немецкая буксирная компания, основанная в 1905 году в Гамбурге, одна из старейших компаний в секторе портового буксирного обслуживания.
Компания является частной и принадлежит группе Fairplay Towage Holding - входит в структуру частной группы под контролем семьи Кюне, то есть связана с Kühne Holding / Klaus-Michael Kühne.
#Towage#Ports#Tugboats#Fairplay#MaritimeServices