Приложение Django перестает работать при развертывании на Apache (подпроцесс работает, но не работает) - PullRequest
0 голосов
/ 13 сентября 2010

Мое приложение Django перестает работать при развертывании на Apache (с mod_wsgi). Он работает на сервере Windows. Приложение вызывает исполняемый файл Windows с именем «rex» (Alchemy Remote Executor), который выполняет команду в другом удаленном окне Windows.

process  = subprocess.Popen( ['rex',ip,usr,pwd,command], stdout=subprocess.PIPE, universal_newlines=True )
out, err = process.communicate() 

В разработке все работает нормально, но при развертывании на Apache с mod_wsgi это не работает! Программа "rex" все еще работает, но она не справляется со своими задачами и выдает следующее сообщение:

Failed to execute the program: A specified logon session does not exist. It may already have been terminated.

Итак, программа "rex" запущена, но она не может установить необходимые соединения или что-то еще, когда она порождается из Apache. Похоже, что Apache как-то закрывает соединение, созданное "rex.exe", прежде чем оно может завершиться!

Есть идеи?

1 Ответ

0 голосов
/ 14 сентября 2010

Это всегда сложная задача при развертывании в службе Windows, на которой вы работаете как другой пользователь, нежели тот, под которым вы работаете, когда вы находитесь в процессе разработки, при запуске его как реального пользователя.У меня были всевозможные проблемы с написанием программы обновления, работающей как служба, с проблемами доступа к файлам.Можете ли вы попробовать войти в Windows под тем же пользователем, на котором запущена служба Apache, и оттуда попробовать свой исполняемый файл rex?Если вам повезет, вы сможете заставить рекс потерпеть неудачу там, где вы находитесь в интерактивном режиме, и сможете устранить его.

Но основная идея состоит в том, чтобы реплицировать сбой вне службы apache, а затем делать все необходимоепусть эта штука работает под разрешениями сервиса, и вы исправлены.Возможно, ваша рекс-программа пытается читать или записывать файлы (например, файлы конфигурации?), Для которых у нее нет разрешений.

...