Задача Django celery не может использовать cairo svg2pdf

У меня есть небольшая задача, которая читает файл svg из пути и использует cairo svg2pdf для преобразования svg в pdf. Если я запускаю функцию без использования celery delay, то функция работает нормально и конвертирует файл в pdf. Если я запускаю функцию как задачу celery, то получаю некоторые ошибки:

             Traceback (most recent call last):
  File "/..../tasks.py", line 24, in create_download_pdf
    svg2pdf(bytestring=bytestring, write_to=completeName)
  File "/.../lib/python3.10/site-packages/cairosvg/__init__.py", line 67, in svg2pdf
    return surface.PDFSurface.convert(
  File "/.../lib/python3.10/site-packages/cairosvg/surface.py", line 131, in convert
    instance = cls(
  File "/.../lib/python3.10/site-packages/cairosvg/surface.py", line 202, in __init__
    self.cairo, self.width, self.height = self._create_surface(
  File "/.../lib/python3.10/site-packages/cairosvg/surface.py", line 242, in _create_surface
    cairo_surface = self.surface_class(self.output, width, height)
  File "/.../lib/python3.10/site-packages/cairocffi/surfaces.py", line 876, in __init__
    Surface.__init__(self, pointer, target_keep_alive=write_func)
  File "/.../lib/python3.10/site-packages/cairocffi/surfaces.py", line 158, in __init__
    self._check_status()
  File "/../lib/python3.10/site-packages/cairocffi/surfaces.py", line 170, in _check_status
    _check_status(cairo.cairo_surface_status(self._pointer))
  File "/../lib/python3.10/site-packages/cairocffi/__init__.py", line 88, in _check_status
    raise exception(message, status)
OSError: [Errno cairo returned CAIRO_STATUS_WRITE_ERROR: b'error while writing to output stream'] 11

Вот функция:

@app.task(name="create_download_pdf")
def create_download_pdf(folder_path: str, svg_data=None, filename=None, file_path=None) -> None:
    try:
        completeName = os.path.join(folder_path, f"{filename}.pdf")
        if svg_data:
            svg2pdf(bytestring=svg_data, write_to=completeName)
        elif file_path:
            with open(file_path, 'r') as f:
                bytestring=f.read()
                print(bytestring)
                svg2pdf(bytestring=bytestring, write_to=completeName)
    except (OSError, ValueError):
        logger.exception(
            f"PDF creation and download exception: Unable to download | create PDF from svg data for {str(filename) or ''}. \n  \
            {traceback.format_exc()}"
        )
        pass

Как это можно решить. Я не посылаю файл в задачу celery, поэтому это не та проблема.

Вернуться на верх