Найти - Пользователи
Полная версия: uwsgi, subprocess и unoconv
Начало » Django » uwsgi, subprocess и unoconv
1
svas
Здравствуйте.
Задача состоит в следующем: на запрос пользователя взять документ ods, сконвертировать его в xls и передать пользователю. Решил использовать утилиту unoconv из поставки LibreOffice и запускать дочерний процесс с помощью subprocess. Проблема в следующем: если я запускаю сервер для разработки (python manage.py runserver), то все работает нормально, при запросе пользователя запускаю unoconv и отдаю сконвертированный документ. Но если запускать через uwsgi, то unoconv не отрабатывает нормально, к логах ошибки “Error: Unable to connect or start own listener. Aborting.”. Вместо unoconv пробовал запускать другие процессы - работает нормально, а вот unoconv не хочет. Не подскажите в чем может быть проблема?
Alen
svas
Здравствуйте.
Задача состоит в следующем: на запрос пользователя взять документ ods, сконвертировать его в xls и передать пользователю. Решил использовать утилиту unoconv из поставки LibreOffice и запускать дочерний процесс с помощью subprocess. Проблема в следующем: если я запускаю сервер для разработки (python manage.py runserver), то все работает нормально, при запросе пользователя запускаю unoconv и отдаю сконвертированный документ. Но если запускать через uwsgi, то unoconv не отрабатывает нормально, к логах ошибки “Error: Unable to connect or start own listener. Aborting.”. Вместо unoconv пробовал запускать другие процессы - работает нормально, а вот unoconv не хочет. Не подскажите в чем может быть проблема?

Для таких задач используют очереди задач. Такие как: MRQ, RQ, Celery, Huey.

Правда если ваш сервис обслуживает один запрос в час можно просто увеличить таймаут ожидания (как у uwsgi так и у веб-сервера) и увеличить количество воркеров. Если же требуется хоть какая-то производительность, то смотри выше.
svas
Да, тоже склоняюсь попробовать celery. Просто не хотелось усложнять.
Правда если ваш сервис обслуживает один запрос в час можно просто увеличить таймаут ожидания
Дело в том что почему-то не работает именно unoconv и именно когда запускаю приложение под uwsgi. При обработке запроса unoconv запуска подряд 10 раз. и если с 10-го раза не получилось сконвертировать - возвращаю ошибку. В логах вижу 10 строчек “Error: Unable to connect or start own listener. Aborting.”. И только потом браузеру прилетает ошибка. Мне кажется дело не в таймауте.


Похоже проблема с правами доступа. Только не знаю пока на что.
Alen
svas
Похоже проблема с правами доступа. Только не знаю пока на что.

strace же! И lsof !
svas
Запустил uwsgi от обычного пользователя, помогло
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB