Библиотека 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 клиент.
Для запуска требуется указать следующие настройки:
httpx.AsyncClient.base_url- базовый адрес Gotenberg API. Обязательная настройка.ScreenshotHTMLRequest.width- ширина скриншота в пикселях. Обязательная настройка.ScreenshotHTMLRequest.format- формат скриншота (может принимать значенияjpeg,png,webp). По-умолчанию -jpeg.ScreenshotHTMLRequest.wait_delay- время ожидания завершения анимаций на 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
Исключения
У библиотеки есть своё собственное исключение, которое через контекстный менеджер отлавливает исключение: