dimanjy
@dimanjy
Недопрограммист и полуинженер.

Что происходит в uWSGI с subprocess.Popen?

Объясните мне, пожалуйста, что происходит в моем приложении, запущенном через uWSGI, когда я в нем пытаюсь сделать subprocess.Popen?
Есть одна тонкость - я использую gevent и в uWSGI у меня используется встроенная возможность работы с gevent.

from gevent.subprocess import Popen, PIPE
import sys

def my_view(request, *args, **kwargs):
        sub = Popen(sys.executable + ' my_worker.py args', stdout=PIPE, shell=True)
        out, err = sub.communicate()
        return out


Когда запускаю локально через встроенный тестовый Django-сервер - все работает.
Когда запускаю через uWSGI, то при вызове вьюхи в логах uWSGI выдается ошибка:

unable to load configuration from my_worker.py


Что такое пытается сделать uWSGI? Какую еще конфигурацию он пытается искать в моем рабочем процессе, который нужно просто выполнить в субпроцессе?
  • Вопрос задан
  • 318 просмотров
Решения вопроса 1
dimanjy
@dimanjy Автор вопроса
Недопрограммист и полуинженер.
Проблема была в том, что при запуске приложения из uWSGI в sys.executable лежит путь не к интерпретатору Питона, а к бинарнику uwsgi-core.
Спасибо Pavel Denisov и sim3x за помощь!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Tanner
@Tanner
Огромный человекоподобный боевой робот
Будучи потомственным телепатом, предположу, что вы в файле my_worker.py делаете импорты, которые приводят к запуску встроенного веб-сервера flask. Где-то не хватает идиоматического “if __name__ == '__main__':”.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы