Hacker News Digest

Тег: #flask

Постов: 2

Python has had async for 10 years – why isn't it more popular? (tonybaloney.github.io) 🔥 Горячее 💬 Длинная дискуссия

  • Async в Python уже 10 лет, но до сих пор не стал мейнстримом.
  • Причины:
    • ошибки «забыл await», трудно отлаживать;
    • GIL приучил не думать о параллелизме;
    • польза только при I/O-задачах, CPU-нагрузка не ускоряется;
    • фреймворки не догнали: Django ORM всё ещё синхронен, Flask тоже.
  • Классический кейс — HTTP-запросы: стартуем сотни корутин, ждём ответов, не блокируем интерпретатор.
  • Но дисковый I/O, CPU-задачи и другие сценарии не так выигрывают.
  • Вывод: чтобы новые фичи 3.14 (free-threading, sub-interpreters) не повторили судьбу async, нужно:
    • чётко объяснять, какие задачи они решают;
    • давать простые API и инструменты отладки;
    • не ждать, пока экосистема «догонит», а сразу внедрять в популярные библиотеки.

by willm • 02 сентября 2025 г. в 17:24 • 254 points

ОригиналHN

#python#asyncio#concurrency#io#django#flask#wsgi#celery#go#elixir

Комментарии (234)

  • Async в Python пришёл «слишком поздно»: к моменту появления asyncio большинство уже решали задачи I/O через forking, multiprocessing или сторонние библиотеки.
  • «Цветные функции» и необходимость переписывать весь код ради async делают его «заразным» и несовместимым с существующими синхронными библиотеками.
  • Сложная семантика (event-loop, await, cancellation-исключения), плохая документация и отсутствие понятных best-practice усложняют отладку и поддержку.
  • Для большинства задач Python-разработчика async не критичен: WSGI/WSGI-совместимые решения, Celery, Kafka и простое горизонтальное масштабирование покрывают потребности.
  • Альтернативы (trio, anyio, gevent) и другие языки (Go, Elixir) предлагают более простые модели конкурентности без «раскрашенных» функций.

Show HN: PlutoPrint – Generate PDFs and PNGs from HTML with Python (github.com)

PlutoPrint — библиотека Python для генерации PDF и изображений из HTML, работает на базе PlutoBook.
Установка: pip install plutoprint.

Основные возможности

  • HTML → PDF/PNG/JPEG — одна строка кода.
  • CSS/JS — полная поддержка современных стандартов.
  • Шаблоны — Jinja2, Django, Flask и др.
  • Пакетная обработка — асинхронный режим.
  • Docker-образ для быстрого деплоя.

Быстрый старт

from plutoprint import PlutoPrint

pp = PlutoPrint()
pp.html_to_pdf("report.html", "report.pdf")

Параметры

  • format: pdf, png, jpeg
  • width/height, orientation, margin, header/footer, dpi

Примеры

  • Отчёты, чеки, инвойсы, почтовые этикетки, скриншоты страниц.

Лицензия

MIT.

by sammycage • 20 августа 2025 г. в 20:37 • 133 points

ОригиналHN

#python#jinja2#django#flask#docker#pdf#html#css#javascript#github

Комментарии (30)

  • Пользователи сравнивают PlutoPrint с WeasyPrint, Puppeteer и Typst: новый движок на C++ обещает быть быстрее и легче по памяти, но покрывает не весь CSS.
  • Рекомендуют прогнать тесты с print-css.rocks и проверить прод-качество (проблемы с thead, page-break-inside и т.д.).
  • Puppeteer даёт полную поддержку веб-платформы, но требует Chromium и много RAM, особенно для 200-500-страничных PDF.
  • Есть вопросы по flexbox, SVG, оглавлению, поддержке Markdown и крэшу на macOS.
  • Несколько человек рассматривают PlutoPrint как замену wkhtmltopdf и fpdf, автор открыт к спонсорству.