Библиотека Gotenberg API упрощает работу с endpoint API для генерации скриншотов gotenberg.dev, предоставляя тонкую обёртку над веб API и библиотекой HTTPX.
Она добавляет к обычным возможностям HTTPX свои схемы данных, а также удобные, часто используемые функции, но не мешает, при необходимости, спускаться ниже на уровень HTTP-запросов.
Вы можете установить библиотеку с помощью pip
:
# Установить из публичного GitHub репозитория (рекомендуемый способ)
$ pip install git+https://github.com/devmanorg/gotenberg-api.git
# Установить из приватного GitLab репозитория (если у вас есть к нему доступ)
$ pip install git+https://gitlab.dvmn.org/dvmn/courses/fastapi/gotenberg-api.git
Библиотека использует асинхронный HTTPX клиент.
Для запуска требуется указать следующие настройки:
- базовый адрес Gotenberg API
- ширина скриншота в пикселях
- формат скриншота (может принимать значения
jpeg
,png
,webp
). По-умолчанию -jpeg
. - время ожидания завершения анимаций на html-странице. По-умолчанию - 2 секунды.
- опциональные настройки асинхронного клиента
Важно: время ожидания завершения анимаций должно быть меньше значения таймаута асинхронного клиента, иначе библиотека будет всегда возвращать TimeoutError
. Рекомендуемый диапазон различия: 2-5 секунд.
Пример запроса:
import httpx
from gotenberg_api import GotenbergServerError, ScreenshotHTMLRequest
try:
async with httpx.AsyncClient(
base_url=settings_var.get().GOTENBERG_URL,
timeout=15,
) as client:
screenshot_bytes = await ScreenshotHTMLRequest(
index_html=raw_html,
width=1000,
format='png',
wait_delay=5,
).asend(client)
except GotenbergServerError as e:
logger.error(e)
screenshot_bytes = None
У библиотеки есть своё собственное исключение, которое через контекстный менеджер отлавливает исключение: