Python Weasyprint, вызывающий высокую загрузку ЦП. Как поставить в очередь рендеринг? - PullRequest
0 голосов
/ 12 марта 2020

Пожалуйста, потерпите меня, когда я выражу это словами:

Я использую Weasyprint на Python Django Framework, у меня 15 страниц html для рендеринга в PDF.

Рендеринг занимает от 70% до 80% моего ЦП, когда один пользователь нажимает кнопку рендеринга, так что происходит, когда два или три пользователя рендерит одновременно, он превышает 100% и заставляет мой сервер cra sh, что мне нужно перезагрузить систему, чтобы она снова заработала.

Мой вопрос такой: есть ли что-то, что я могу использовать, чтобы поставить пользователей в очередь на рендеринг? Вместо одновременной обработки запросов на рендеринг, заставлять их ждать в очереди?

1 Ответ

1 голос
/ 12 марта 2020

Вы можете проверить Celery. Идея состоит в том, чтобы использовать асинхронную очередь задач / очередь заданий на основе распределенной передачи сообщений с использованием такого брокера, как RabbitMQ или Redis

http://www.celeryproject.org/

В идеале, Ваша фоновая задача должна выполняться на серверах, отличных от серверов приложений, чтобы они могли масштабироваться независимо и не влияли друг на друга.

...