Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 16, 2015 13:27:40

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

uwsgi, subprocess и unoconv

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



Отредактировано svas (Фев. 16, 2015 13:28:29)

Офлайн

#2 Фев. 16, 2015 14:21:12

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

uwsgi, subprocess и unoconv

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 так и у веб-сервера) и увеличить количество воркеров. Если же требуется хоть какая-то производительность, то смотри выше.

Офлайн

#3 Фев. 16, 2015 15:33:31

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

uwsgi, subprocess и unoconv

Да, тоже склоняюсь попробовать celery. Просто не хотелось усложнять.

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


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



Отредактировано svas (Фев. 16, 2015 16:07:27)

Офлайн

#4 Фев. 16, 2015 20:30:43

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

uwsgi, subprocess и unoconv

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

strace же! И lsof !

Отредактировано Alen (Фев. 16, 2015 20:33:13)

Офлайн

#5 Фев. 17, 2015 06:53:21

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

uwsgi, subprocess и unoconv

Запустил uwsgi от обычного пользователя, помогло



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version