Weasyprint Отключает все предупреждения

Использую WeasyPrint, но он всегда заваливает меня информацией, сообщениями о дебюте.

Как мне отключить их все? Ничего из того, что я пробовал, не работает. (С использованием Django)

Спасибо

Если это происходит во время генерации PDF-файла - приведенное ниже работает в FastAPI контекстах (и моим примером использования было преобразование HTML в PDF), и я не вижу причин, по которым это не сработало бы и в Django или для других этапов генерации.

Будьте осторожны, так оно и есть... это не обязательно взлом, но и не очень чистый подход - он влияет на поведение на уровне операционной системы и поэтому может быть нестабильным для всех сред или путей параллельного выполнения.

Что он делает, так это в основном перенаправляет stderr туда, где вы не можете его увидеть в контексте выполнения, заданном менеджером, а затем возвращает его в нормальное состояние:

import contextlib
import sys
import tempfile
from weasyprint import HTML

@contextlib.contextmanager
def suppress_stderr():
    with tempfile.TemporaryFile() as f:
        stderr_fd = sys.stderr.fileno()
        sys.stderr.flush()

        saved_stderr_fd = os.dup(stderr_fd)
        os.dup2(f.fileno(), stderr_fd)

        try:
            yield
        finally:
            os.dup2(saved_stderr_fd, stderr_fd)
            os.close(saved_stderr_fd)

with tempfile.NamedTemporaryFile(delete=False, dir=PDF_TMP_PATH, suffix='.pdf') as pdf:
    try:
        with suppress_stderr():
            HTML(string=content).write_pdf(pdf.name)
    except Exception as e:
        ...
Вернуться на верх