Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
✅✅✅✅ Cats & Dogs (😺 + 🦴) = $FOOD NEW Airdrop for all Partnership with #Memefi
✉️ You get rewarded for how many days you've been on Telegram
👉 New users join to Get $FOOD for checking 8 hours once :- https://t.me/catsdogs_game_bot/join?startapp=1048396301
➖ Allocation Depends On Your Telegram Age
➖ Choice Cats or Dogs Every 8 Hours
➖ Complete Tasks to earn more $FOOD for your CATS/DOGS
Secret Code for MemeFi ✅
Tap sequence:
1. Head
2. Legs
3. Head
4. Legs
Watch the video!
+2,000,000🪙
⚫️@memefi_coin_bot
#MemeFi
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
🏆Top 23 projects where you can earn $.
Secret Code for MemeFi ✅
Tap sequence:
1. Head
2. Legs
3. Head
4. Legs
Watch the video!
+2,000,000🪙
⚫️@memefi_coin_bot
#MemeFi
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
🏆Top 23 projects where you can earn $.
🐻Secret tap combo for #MemeFi !!
Claim 1,000,000 coins:
https://t.me/memefi_coin_bot
- Tap from head to toe 4 times.
Watch the video!
I will choose three active participants and send them money for tea and cookies (88 ANON each, $1.2). Daily reward from
🪙 PromoX I'm waiting for game stories, videos, memes, etc. Write here.👈👈
°°°°
В чате Memefi подняли вопрос о причастности администрации к такому проекту, как Igu Verse. Я начал задавать вопросы, в результате меня забанили в чате.
#memefi
Пошел собирать инфу
🪙MemeFiDaily Combo for November 2!(Same as yesterday)
You need to press four places in the correct order, after which you will be given 1,500,000
💸
Press in the following order:
1️⃣💛3️⃣💛3️⃣💛2️⃣💛4️⃣
After tapping, wait 5-10 seconds to receive your reward.
🔔Subscribe👉Join MemeFi
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️
#memefi#dailycombo#combo
🪙MemeFiDaily Combo for October 22!(Same as yesterday)
You need to press four places in the correct order, after which you will be given 1,500,000
💸
Press in the following order:
1️⃣💛3️⃣💛3️⃣💛2️⃣💛4️⃣
After tapping, wait 5-10 seconds to receive your reward.
🔔Subscribe👉Join MemeFi
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️
#memefi#dailycombo#combo
🪙MemeFiDaily Combo for October 16!
You need to press four places in the correct order, after which you will be given 1,500,000
💸
Press in the following order:
1️⃣💛3️⃣💛4️⃣💛2️⃣💛3️⃣💛2️⃣
After tapping, wait 5-10 seconds to receive your reward.
🔔Subscribe👉Join MemeFi
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️
#memefi#dailycombo#combo
🪙MemeFiDaily Combo for September 27!(Same as yesterday)
You need to press four places in the correct order, after which you will be given 1,000,000
💸
Press in the following order:
4️⃣💛2️⃣💛4️⃣💛2️⃣
After tapping, wait 5-10 seconds to receive your reward.
🔔Subscribe👉Join MemeFi
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️
#memefi#dailycombo#combo