2016-03-09 6 views
0

Im using God (godrb.com) для мониторинга процесса приложения с использованием скрученной основы. В моем файле бога (start_my_app.god) У меня естьНевозможно запустить процесс python с помощью God

God.watch do |w| 
    w.name='my_app' 
    w.start='twistd -y /home/joes/my_app.tac --pidfile /home/joes/my_app.pid' 
    w.log='/home/joes/my_app.log' 
    w.keepalive 
end 

В моем каталоге приложения файл с именем node.py, содержащий класс NodeQS, и в my_app.tac файле им делать

from node import NodeQS 

Когда я попробуйте запустить приложение с помощью

god -c start_my_app.god -D 

я вижу следующее сообщение об ошибке в моем журнале приложений

exceptions.ImportError: No module named node

Я добавил/home/joes/my_app в PYTHONPATH, но я все еще вижу эту ошибку, когда я запускаю команду twistd с помощью бога.

The above twistd command works if i run it directly

Почему вы пытаетесь запустить ту же команду от бога, давая мне ошибку импорта?

+0

Это должно быть причиной плохого 'PYTHONPATH'. Самый простой способ исправить это - сначала изменить рабочий каталог. Попытайтесь добавить 'cd/home/joes;' перед реальной командой. –

+0

Большое спасибо Клаус Д. !! :). Добавив cd, как и предложил, исправил его. Пожалуйста, добавьте его в качестве ответа, чтобы я мог отметить его как принятый :). – joes

ответ

1

Когда вы запускаете скрипт Python с полным путем, PATHONPATH устанавливается в текущий рабочий каталог. Этот путь затем используется в качестве базы для импорта пакетов и модулей.

Чтобы сделать это, PYTHONPATH отражает ваш каталог проектов, вы, cd, первыми. Вы можете добавить команду, чтобы сделать так, чтобы значения .start:

God.watch do |w| 
    w.name='my_app' 
    w.start='cd /home/joes; twistd -y /home/joes/my_app.tac --pidfile /home/joes/my_app.pid' 
    w.log='/home/joes/my_app.log' 
    w.keepalive 
end