Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Делим 50 млн$ от Mantra
👍 Давненько отрабатываем различные активности от этого L1-блокчейна (всё в тестнете, поэтому бесплатно), награда – 50 млн $OM (49,5 млн$), скипать такой жирнейший пул вовсе не советую!
🥺Что нужно сделать?
🔵 Создаем аккаунт в Leap Wallet(полезно будет перенести сидку из Keplr) + добавляем сеть MANTRA
🔵 Теперь топаем в их дискорд и запрашиваем тестовые $OM в ветке #hongbai-faucet
🔵 В самом кошельке жмём на Stake и отправляем 1 $OM любому валидатору
🔵 В конце на 👉сайте забираем 8,8 KARMA
Простая и быстрая активность, даже новичкам советую залететь, проект очень перспективный.
▪️Crypto Time
Уверенный WORK: лайтовый тестнетик с пулом 60М$+🏄♂️
ℹ️Mantra — L1-решение, которое запускает собственный L1-чейн.
Парочку месяцев подряд мы проходили первую фазу тестнета (задания на Galxe), сейчас же был сделан анонсвторой части: тут нам нужно будет активничать в тестовой сети Mantra Hongbai Testnet, пул наград –50 млн $OM (~60 млн$, токен на Binance торгуется).
🍟Активность абсолютно фри:
1️⃣ Устанавливаем Leap Wallet, в правом верхнем углу кликаем на лого Cosmos и добавляем тестовую сеть Mantra
2️⃣ Топаем на 👉сайтик и коннектим наш Leap
3️⃣ Теперь проходим проверку на бота в 🦀дискорде, в ветке #general оставляем заявку на кран
4️⃣ Перед нами должна появиться ветка #hongbai-faucet, там вводим команду /request + ваш OM-адрес и получаем 0,2 $OM
5️⃣ Делаем такой запрос 5 раз, чтобы на балансе был 1 $OM
6️⃣ Теперь идём в Leap и нажимаем на Stake (2 раза), выбираем любого валидатора и вписываем 1 $OM
7️⃣ В итоге нам дадут 5 поинтов KARMA здесь
▪️Crypto Time