Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🤴Мы запускаем DYOR Tips.
ℹ️DYOR Tips- это цикл публикаций, которые ближе познакомят пользователей с нашими основными продуктами, расскажут о том, как ими можно пользоваться и почему они могут быть полезны в применении.
🔜 Первая публикация о главной странице DYOR.io и её возможностях выйдет уже в эту субботу.
🔥В честь этого мы запускаем небольшой интерактив для наших пользователей, в котором вам нужно будет предложить какую-нибудь интересную фичу, которую мы можем внедрить на главной странице нашего сайта, в один из наших чатов с хэштэгом #homepage
DYOR.io Chat (EU)
DYOR.io Чат (RU)
🎤 Мы будем принимать ваши предложения до 28 сентября этого года, после чего соберём их все, рассмотрим на предмет целесообразности и выберем из них три наиболее интересных и полезных.
💎 Их авторов мы наградим нашим DYOR coin:
🥇 За 1 место - 7 $DYOR
🥈 За 2 место - 5 $DYOR
🥉 За 3 место - 3 $DYOR
✏️ Дерзайте!
Сайт • Чат • 𝕏 • Поддержка
Начнем с рассмотра главной страницы сайта asb-video.ru
Логотип компании, кнопка вызова по телефону, оператор в телеграме и кнопка меню расположились в верхней части экрана мобильного устройства.
Далее нас встречает баннер, который в будущем может превратиться в слайдер акций, скидок или нового проекта.
Ниже нас будут ждать типовые решения для дома, офиса, склада, магазина или квартиры, которые
ООО «АСБ» может предложить для вашего видеонаблюдения.
После типовых решений нас ждёт уникальное целевое действие.
Интерактивным интерфейсом мы заинтересуем посетителей сайта воспользоваться калькулятором подсчёта сметы персональной
системы видеонаблюдения.
Для этого необходимо ввести два значения с помощью клавиатуры — количество помещений и общую площать вашего объекта.
Я придумал систему просчёта количества необходимого оборудования для не сложной среднестатистической системы.
По кнопке ниже калькулятора мы перейдём к просчитанной смете
и сможем ознакомиться
с составом автоматически подобранного решения.
Внизу экрана мобильного устройства вы всегда сможете увидеть кнопки главной, каталога, калькулятора, контактов и кабинета технической поддержки.
В следующем посте мы рассмотрим меню сайта.
#asb#mobile#uxui#design#asbvideoru#homepage
www.asb-video.ru
#vue#awesome#dashboard#docker#hacktoberfest#homelab#homepage#mit#nodejs#organization#productivity#pwa#self_hosted#startpage#vue
Dashy is a free, open-source dashboard that lets you organize and access all your self-hosted services, apps, and web links from one central place, making it easy to manage and monitor everything you use regularly[1][2][4]. It comes with over 50 pre-built widgets for things like system monitoring, news, weather, and productivity, and you can customize the look and layout with themes, icons, and different views[4][5]. The main benefit is that Dashy saves you time and hassle by giving you a single, user-friendly page to launch and check on all your important services, with features like instant search, status indicators, and multi-language support[4][5].
https://github.com/Lissy93/dashy