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