Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🆕Appointments here!
We glad to present you a 1st version of Appointment system. This journey was challenging, interesting and took 4 months. We faced complex challenges where we had to create a new approach.
🌐 Now you can discover all kind of businesses in one mini app with convenient map. Your country, your service, your time!
🛍 We know that our users want to provide their customers with only the best service that will work 24/7 without interruption. All on one page and app. Provide services and book services from others. The era of Telegram appointments is now open!
And don't forget, almost all new businesses will be available for viewing and researching by thousands of Callegram users. Don't miss the opportunity to be the first to create a business!
App | #Callegram#MiniApps#Appointments
🔜 We're at the finish line!
This is what the booking process will look like from the client's side. Choose the time, master and service that is convenient for YOU 👍
App | #Callegram#MiniApps#Appointments
✏️Find a Cool Service Directly in @CallegramBot? Why Not?
We’re almost here with a new huge update — Appointments.
Our users will be trying to find an awesome services directly in the mini app.
We’re doing our best!
App | #Callegram#MiniApps#Appointments
🚨AI Takes Your Job
And this is awesome! Today we’ve tried our first version of AI Appointments. And it works really great!
In the near future your clients will chat with you about services and AI will assist you with confirming appointments.
Different languages, text and voice messages. No more annoying work!
Be ready for the feature right now. Create your business
🔗t.me/CallegramBot/subscribe_business
App | #Callegram#MiniApps#AI#Appointments
🔜Appointments In Callegram
This is a big part of our service and we want to share with you a first sneak peak.
⚠️ This feature is not available now. Check our news below.
Users. You will get an option to make an appointment directly in Telegram for your favorite services. You don’t need to make a call or visit the service location. Just few clicks and you will get what you want + reminders about upcoming service.
Businesses. Setup your businesses, locations, specialists, their schedules and services. Automate your handwork and launch your services in Telegram within a few minutes.
Marketplaces. If you want to use our Callegram system in your flow and give your merchants opportunity to create an appointment schedule, please contact @krimon
👀 Stay tuned and check the news in our channel
#MiniApps#Telegram#Business#Appointments
🤫Page Of Businesses
Users, are you ready to make appointments in a few clicks?
Businesses, are you ready to provide your services seamlessly?
🙂 Stay tuned
#Appointments#MiniApps#Business#CallegramBusiness
⚙️We've automated everything for you
Now your business' schedule is sent automatically if the person writes the words ‘Book’, ‘Appointment’
To activate the function:
1) Create a business with services;
2) Pay subscription;
3) Add @CallegramBot in Telegram settings in "Telegram Business - ChatBots".
Now your customers will get a specific message with option to make an appointment.
Don't waste time on routine, get down to business. Callegram optimises your work 💰
App | #Callegram#MiniApps#Appointments#TelegramBusiness