Я пытаюсь запустить серверное приложение (в erlang открывает порты и прослушивает http-запросы) через командную строку, используя pexpect (или даже напрямую, используя subprocess.Popen()).
приложение запускается нормально, регистрируется (через pexpect) на экране нормально, я также могу взаимодействовать с ним через командную строку...
проблема в том, что серверы не прослушивают входящие запросы. Приложение слушает, когда я запускаю его вручную, вводя команды в командной строке. использование subprocess/pexpect каким-то образом останавливает прослушивание приложения...
когда я запускаю его вручную, «netstat -tlp» отображает приложение как прослушивающее, когда я запускаю его через python (subprocess/pexpect), netstat не регистрирует приложение. ..
У меня есть ощущение, что это как-то связано с окружающей средой, с тем, как питон разветвляется и т. Д. Есть идеи?
благодарю вас
базовый пример: примечание:
"-pz" - просто объявляет ./ebin путь к модулям для виртуальной машины erl, путь поиска библиотеки
"-run" - запускает имя_модуля без каких-либо параметров.
command_str = "erl -pz ./ebin -run moduleName"
child = pexpect.spawn(command_str)
child.interact() # Give control of the child to the user
все это работает корректно, что странно. У меня есть журнал внутри моего кода, и все сообщения журнала выводятся так, как должны. сервер не будет слушать, даже если я запустил его процесс с помощью сценария bash, поэтому я не думаю, что это вызвано кодом Python (поэтому у меня такое ощущение, что это что-то касается того, как запускается новый процесс ОС).